Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中解析这个简单的XML?_C#_Xml_Parsing - Fatal编程技术网

如何在C#中解析这个简单的XML?

如何在C#中解析这个简单的XML?,c#,xml,parsing,C#,Xml,Parsing,我想在C#中解析SOAP xml响应(但我不能使用标准SOAP接口,因为wsld不正确) 解析时,我希望所有元素都有名称(列出元素名称)并访问其所有子元素 XML的总体外观: <return> <item> <attr1>1</attr1> <attr2>X</attr2> </item> <item> <attr1>2</attr1> &l

我想在C#中解析SOAP xml响应(但我不能使用标准SOAP接口,因为wsld不正确)

解析时,我希望所有元素都有名称(列出元素名称)并访问其所有子元素

XML的总体外观:

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

1.
X
2.
Y
...

关于

您可以使用XmlDocument类或XElement类解析xml

您可以使用一些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
       };

使用LINQtoXML,只需执行以下操作

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")
            };

Google将Linq转换为XML。在我看来,这是将简单xmlOr解析为动态XML的最简单方法(自.NET4以来)
XmlDocument doc = new XmlDocument();
doc.Load(“myxml.xml");

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

    }
}