2010-04-13 22 views
1

我想在C#中解析SOAP xml響應(但我不能使用標準SOAP接口,因爲wsld不正確)。如何在C#中解析這個簡單的XML?

解析時我想讓所有具有名稱的元素(具有名稱的列表元素)並訪問其所有子元素。

的XML整體外觀:

<return> 
    <item> 
    <attr1>1</attr1> 
    <attr2>X</attr2> 
    </item> 
    <item> 
    <attr1>2</attr1> 
    <attr2>Y</attr2> 
    </item> 
... 
</return> 

問候

+0

谷歌對LINQ到XML一樣簡單。在我看來,解析簡單的xml – Henri 2010-04-13 13:15:42

回答

2

你可以使用一些LINQ語法到你的XML。從新開始使用

using System.Xml.Linq; 

然後你可以寫一個linq查詢來打開你的xml文件。 (在我的例子中,它是一個web應用程序,但你可以改變它)只需獲取要分析元素的元素的後代。然後做一些結果。在我的情況下,我正在用我想要的確切值填充一個新對象。

XDocument changesetXML = XDocument.Load(Server.MapPath(@"~\changesets.xml")); 

return from changeset in changesetXML.Descendants("Changeset") 
     select new NewsTopic 
     { 
      DateAdded = changeset.Element("Date").Value, 
      Content = changeset.Element("Summary").Value 
     }; 
0

您可以分析與XmlDocument類或類的XElement XML

+0

或動態(從.NET 4開始) – Ivo 2010-04-13 13:16:18

1

使用LINQ to XML,這是因爲這樣做類似下面的

XDocument document = XDocument.Load(fileName); // or .Parse(string) + other methods 

var query = from item in document.Descendants("item") 
      select new 
      { 
       Attr1 = (int)item.Element("attr1"), 
       Attr2 = (string)item.Element("attr2") 
      }; 
0
XmlDocument doc = new XmlDocument(); 
doc.Load(「myxml.xml"); 

foreach(XmlNode xn in doc) 
    { 
    foreach(XmlElement element in xn) 
    { 
    //do something 

    } 
}