2013-01-06 65 views
0

我在C#中使用HttpWebRequest獲取以下XML字符串。將以下XML導出到Datatable

我的回答是XML

<response> 
    <accounts> 
     <account> 
      <city>Some City</city> 
      <accountId>1234567</accountId> 
      <companyName>My Company</companyName> 
      <country>My Country</country> 
      <email>[email protected]</email> 
      <enabled>1</enabled> 
     </account> 
     <account> 
      <city>Some Other City</city> 
      <accountId>0987654</accountId> 
      <companyName>My Other Company</companyName> 
      <country>My Country</country> 
      <email>[email protected]</email> 
      <enabled>1</enabled> 
     </account> 
    </accounts> 
    <total>2</total> 
    <limit>20</limit> 
    <offset>0</offset> 
</response> 

我需要將XML導出到一個數據表與下面的架構。

accountId | companyName  | city   | country | email     | enabled 
1234567 | My Company  | Some City  | My Country | [email protected]  | 1 
0987654 | My Other Company | Some Other City | My Country | [email protected] | 1 

這是我第一次使用XML,我很困惑如何去做。請幫幫我。

+1

嘛,你嘗試過什麼?例如,您是否閱讀過LINQ to XML?當然,這是我首選的.NET中的XML API。有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/bb387098.aspx。 –

回答

1
// Forming a DataTable 
dt = new DataTable("Accountdata"); // System.Data.DataTable 
dt.Columns.Add("Account ID"); 
dt.Columns.Add("Company Name"); 
dt.Columns.Add("City"); 
dt.Columns.Add("Country"); 
dt.Columns.Add("Email"); 
dt.Columns.Add("Enabled"); 

// XML Part 
string path = "accounts.xml"; 
XmlDocument XMLDoc = new XmlDocument(); // System.Xml.XmlDocument 
XMLDoc.Load(path); 
foreach (XmlNode AccData in XMLDoc.SelectNodes("/response/accounts/account")) 
{ 
    if (AccData["accountId"] == null) 
    { 
     continue; 
    } 
    else 
    { 
     // Fill the DataTable line by line 
     int AccountId = Convert.ToInt32(AccData["accountId"].InnerText); 
     string CompanyName = AccData["companyName"].InnerText; 
     string City = AccData["city"].InnerText; 
     string Country = AccData["country"].InnerText; 
     string Email = AccData["email"].InnerText; 
     int Enabled = Convert.ToInt32(AccData["enabled"].InnerText); 
     dt.Rows.Add(AccountId, CompanyName, City, Country, Email, Enabled); 
    } 
}    

應該給予你exatly你想要的。 現在你有你的結構,並且可以進一步處理數據或將其保存到數據庫中

在重點使用的類:

+0

'XMLDoc.SelectNodes'出現錯誤。錯誤消息:''System.Xml.Linq.XDocument'不包含'SelectNodes'的定義,並且沒有找到接受'System.Xml.Linq.XDocument'類型的第一個參數的擴展方法'SelectNodes' )# –

+0

Ahh ..我的壞..我正在使用'XDocument'而不是'XmlDocument' ..現在測試。 wpf上的 –

+0

:你可以簡單地將'DataTable'綁定到'DataGrid'的'ItemsSource'來查看發生了什麼。 – derWilly