如何获取xml节点中的元素数?

时间:2017-10-25 09:03:26

标签: c# xml

我从msmq获取xml文件,并想知道每个节点中元素的数量。我的xml如下所示。 Mode计数应为4,然后我将进行循环以将它们放入集合/列表中。请帮我解决这个问题。

<?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>

4 个答案:

答案 0 :(得分:2)

OnBackgroundActivated

答案 1 :(得分:0)

这里你是如何计算的

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

你可以将这些元素放入列表而不需要循环

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

答案 2 :(得分:0)

您应该使用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

答案 3 :(得分:0)

我会使用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();