2010-04-13 56 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 

    } 
}