【问题标题】:How to parse the below xml string in c#如何在c#中解析下面的xml字符串
【发布时间】:2013-01-02 01:31:00
【问题描述】:

我在一个字符串变量中有以下 xml 字符串。

string xmlString = "<a:ORegions>
                             <a:ID>1</a:ID> 
                             <a:regionCode>US</a:regionCode> 
                    </a:ORegions>
                    <a:ORegions>
                             <a:ID>2</a:ID> 
                             <a:regionCode>CANADA</a:regionCode> 
                    </a:ORegions>
                    <a:ORegions>
                    <a:ID>3</a:ID> 
                             <a:regionCode>ASIA</a:regionCode> 
                    </a:ORegions>

现在我想访问 regionCode 值,即 US、CANADA、ASIA

我如何使用 c# 来做到这一点。我是 xml 解析的新手。

【问题讨论】:

  • “请尽快给我建议。” 这往往与您想要的效果相反。它不应该,但它往往会。
  • “请尽快给我建议”听起来你应该雇人而不是让我们做你的脏活。
  • ...或者在 C# 和 XML 上做一些谷歌搜索。您的示例很容易解析...
  • 如果您还没有尝试过任何东西,我建议您从XDocument.Load (msdn.microsoft.com/en-gb/library/…) 开始。

标签: c# .net xml xml-parsing xml-serialization


【解决方案1】:

您可以通过System.Xml 命名空间类,特别是XmlDocument,例如使用它的Load method 反序列化该字符串(假设您修复了各种语法错误)。要访问命名空间(a:Oregions 中的a,这就是命名空间),您需要一个XmlNamespaceManager。然后,您将向管理器注册命名空间(它们必须在某处定义)并在查询 XmlDocument 时使用它。

【讨论】:

    【解决方案2】:

    使用LinqToXml

    var doc = XDocument.Parse(xmlString);
    

    然后您可以访问以下元素、值和属性:

    XNamespace xmlNamespace = "a";
    
    //e.g. Retrieve's a list of regioncodes...
    var ids = doc.Elements(xmlNamespace + "ORegions")
                 .Select(r => r.Element("regionCode").Value);
    

    【讨论】:

      【解决方案3】:
      XmlDocument document = new XmlDocument();
      document.Load(filePath);
      
      foreach (XmlNode node in document.GetElementsByTagName("a:regionCode"))
          Console.WriteLine(node.InnerText);
      

      【讨论】:

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