我是一名PHP程序員,我試圖瞭解一些我認爲是ASP.NET的代碼。這也是我第一次進入XML。我無法訪問Windows盒子進行測試。DataSet.ReadXml(TextReader)如何處理嵌套的XML元素?
我需要生成第三方代碼可以使用的XML輸出。第三方希望使用我們的數據,而不是他們當前使用的數據源。我不想複製當前的XML結構,確切地說是,因爲它沒有很好地映射到我們的數據。
當前XML的結構非常平坦。只有少數嵌套元素,第三方不使用它們中的任何一個。第三方確實有一個分包程序員,但他很忙。另外,我想爲自己理解這是如何工作的。
這是從一個自定義的CMS插件的摘錄:
Dim obj_set As New Data.DataSet()
Using obj_reader As New System.Xml.XmlTextReader("http://www.example.com/xml_output.php")
obj_set.ReadXml(obj_reader)
End Using
Dim obj_view As Data.DataView = obj_set.Tables("profile").DefaultView
obj_view.Sort = "cname"
Dim obj_data As Data.DataTable = obj_view.ToTable()
所以從我迄今收集的,該代碼
- 讀取XML文件到DataSet
- 按cname排序配置文件表
- 從排序視圖創建新的DataTable
還有其他代碼將新表存儲到緩存中並從中檢索它。然後有代碼循環遍歷錶行並將列名映射到模板變量。當前XML結構的
樣品摘錄:
<profiles>
<profile>
<cname>ABC Corporation</cname>
<fname>John</fname>
<lname>Smith</lname>
<sector>Widgets</sector>
<subsectors>
<subsector>Basic Widgets</subsector>
<subsector>Fancy Widgets</subsector>
</subsectors>
</profile>
</profiles>
那麼會發生什麼變化subsectors
數據?讀者是否爲它創建了一個單獨的表格?如果是這樣,表格如何相關?
我們的數據包括每個公司多個聯繫人。我可以在頂層創建多個元素fname1
,fname2
,fname3
以保持平面結構。但我認爲嵌套結構對於這類數據是有意義的。問題是我不明白這樣的結構變化是否與插件代碼兼容。
需要對使用嵌套元素的插件代碼進行哪些更改?