如何使用 c# 从标签之间的 XML 检索数据?

Posted

技术标签:

【中文标题】如何使用 c# 从标签之间的 XML 检索数据?【英文标题】:How to retrieve data from XML between tags using c#? 【发布时间】:2019-12-06 00:52:44 【问题描述】:

我正在对 Web 服务进行 HTTP 调用,该服务以 XML 格式给出响应。我现在面临的问题是如何读取元素之间的那些数据。

下面是我的代码。

        XmlDocument document = new XmlDocument();

        document.Load("http://thecatapi.com/api/categories/list");

        XmlNodeList categoryNodes = document.SelectNodes("//response/data/categories");

        foreach (XmlNode categoryNode in categoryNodes)
        
            XmlNode category = categoryNode.SelectSingleNode("category");
           var id =categoryNode.Attributes["id"].InnerXml;
           string name = categoryNode.Attributes["name"].InnerText;
        
        document.Save("test-doc.xml");

这是 XML 的结构

      <response>
          <data>
             <categories>
                  <category>
                      <id>5</id>
                      <name>boxes</name>
                  </category>
                  <category>
                      <id>8</id>
                      <name>boys</name>
                  </category>
              </categories>
           </data>
       </response>

【问题讨论】:

你能在你的问题中添加一点xml结构吗? @Bosco 这是结构。我忘了这个。 【参考方案1】:

尝试使用XElement

try

    XElement booksFromFile = XElement.Load("http://thecatapi.com/api/categories/list");

    var category = booksFromFile.Element("data").Element("categories").Elements("category");

    foreach (var element in category)
    
        var id = element.Element("id").Value;
        var name = element.Element("name").Value; 
    
    booksFromFile.Save("test-doc.xml");

catch (Exception e)

    //handle and log the error here

【讨论】:

以上是关于如何使用 c# 从标签之间的 XML 检索数据?的主要内容,如果未能解决你的问题,请参考以下文章

C#如何检索存储在BLOB中的XML,然后更新它并存储

C# 将 XML 文件从给定标签解析为对象

使用 C# 从 XML 中检索文本

如何从标签页的嵌入表单中检索文本框?

XML基本知识

如何在 PetaPoco 中检索 xml 列