【问题标题】:How do I parse this simple XML in C#?如何在 C# 中解析这个简单的 XML?
【发布时间】:2010-04-13 13:06:54
【问题描述】:

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

在解析时,我希望所有元素都具有名称(具有名称的列表元素)并访问其所有子元素。

XML 的整体外观:

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

问候

【问题讨论】:

  • Google for Linq to XML。在我看来,这是解析简单 xml 的最简单方法

标签: c# xml parsing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 或动态(从.NET 4开始)
      【解决方案4】:
      XmlDocument doc = new XmlDocument();
      doc.Load(“myxml.xml");
      
      foreach(XmlNode xn in doc) 
        {
        foreach(XmlElement element in xn)
          {
        //do something
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-07
        • 1970-01-01
        相关资源
        最近更新 更多