【问题标题】:How to get count of elements in xml nodes? [duplicate]如何获取 xml 节点中的元素数量? [复制]
【发布时间】:2017-10-25 09:03:25
【问题描述】:

我正在从 msmq 获取 xml 文件,并且想知道每个节点中元素的数量。我的 xml 如下所示。模式计数应为 4,然后我将执行 for 循环将它们放入集合/列表中。请在这个问题上帮助我。

<?xml version="1.0"?>
<Patient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Mode>
    <string>51000153</string>
    <string>51002040</string>
    <string>51001475</string>
    <string>51002670</string>
  </Mode>
</Patient>

【问题讨论】:

    标签: c# xml


    【解决方案1】:
    int count = xml.Descendants("string").Count();
    

    【讨论】:

      【解决方案2】:

      我会使用 LINQ 来完成这个任务。

      对于项目的计数:

      XDocument doc = XDocument.Load("xmlfile.xml");
      var count = doc.Descendants("Mode")
                     .Descendants("string")
                     .Count();
      

      用于将值插入 IEnumerable:

      XDocument doc = XDocument.Load("xmlfile.xml");
      var list = doc.Descendants("Mode")
                    .Descendants("string")
                    .Select(node=>node.Value)
                    .ToList();
      

      【讨论】:

      • 这里有点混合的方法。使用 Element()/Elements() 指定完整路径或使用一个 Descendants()
      【解决方案3】:

      你是怎么得到计数的

      XDocument doc = XDocument.Parse("xmlstr");
      int count = doc.Elements("string").Count();
      

      您可以将这些元素放入列表中而无需循环

      IEnumerable<XElement> list = doc.Elements("string").ToList();
      

      【讨论】:

        【解决方案4】:

        你应该使用XmlNodeList类型和GetElementsByTagName方法,下面是来自MSDN的小例子

        .............
        XmlElement root = doc.DocumentElement; // Doc is `XmlDocument`
        XmlNodeList elemList = root.GetElementsByTagName("title");
        for (int i=0; i < elemList.Count; i++)
        {   
          Console.WriteLine(elemList[i].InnerXml);
        } 
        

        更多信息请打开下面的链接

        XmlNodeList.Count Property

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-13
          • 1970-01-01
          • 1970-01-01
          • 2023-04-04
          • 2012-02-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多