2013-07-01 21 views
0

我想讀取一個XML文件到一個DataTable中,我很難匹配架構,並正確轉換它。這是XML可能是什麼樣子......將XML讀取到DataTable中。需要匹配架構

<?xml version="1.0" encoding="utf-8"?> 
<School> 
    <Teacher> 
    <Name>Teacher1</Name> 
    <Student> 
     <Student-Name>Student1</Student-Name> 
     <Gender>M</Gender> 
     <Address>Address1</Address> 
    </Student> 
    <Student> 
     <Student-Name>Student2</Student-Name> 
     <Gender>F</Gender> 
     <Address>Address2</Address> 
    </Student> 
    </Teacher> 
    <Teacher> 
    <Name>Teacher2</Name> 
    <Student> 
     <Student-Name>Student3</Student-Name> 
     <Gender>F</Gender> 
     <Address>Address3</Address> 
    </Student> 
    </Teacher> 
</School> 

我需要將其添加到DataTable,使其表看起來像這樣

名稱                   學生-Name      性別     地址
------------------- ---------------------------------
Teacher1       Student1                        中號     地址1
Teacher1       STUDENT2                        ˚F     地址2
Teacher2      學生三                       ˚F     地址3

DataTable.ReadXML() - >不會允許我讀在這個XML文件中。錯誤表示DataTable不支持模式推理
DataSet.ReadXML() - >在模式中沒有選取,並將其分成兩個表,第一個是Teacher Table,第二個是Student Table,甚至是當它被設置爲推斷模式。

另一個問題是,我正在這樣做幾種類型的XML文件。所有這些節點都有不同數量的嵌套在學生中的節點,我需要使這個通用節點能夠讀取XML,而不管節點的數量如何。

我想知道是否需要設置一個XmlReader來讀取它,或者是否需要使用DataSet.ReadXML()/ DataTable.ReadXML()上的任何設置。謝謝。

回答

0

如果您熟悉Xsd.exe(visual studio中的一個工具),您可以從XML數據生成類,這將允許您直接從XML中將數據批量加載到生成的類中。

+0

謝謝。我最終合併了由DataSet.ReadXml()創建的兩個表,因爲它們被分配了一個將嵌套節點與父節點相關聯的額外值。 – JBlaze