C# - 如何使用LINQ to XML获取子元素的数量

时间:2017-07-05 20:05:15

标签: c# xml linq linq-to-xml

这是我正在使用

的XML的摘录
    <AccountNumber>
      <RecordID>A9</RecordID>
      <SegmentLength>14</SegmentLength>
      <Number>6770307103</Number>
    </AccountNumber>
    <PaymentCounter>
      <RecordID>B2</RecordID>
      <SegmentLength>14</SegmentLength>
      <History>99</History>
      <Delinq30Day>00</Delinq30Day>
      <Delinq60Day>00</Delinq60Day>
      <Delinq90PlusDay>00</Delinq90PlusDay>
      <DerogCnt>00</DerogCnt>
    </PaymentCounter>

这里我试图确定AccountNumber和PaymentCounter下的子元素数量。

我正在寻找这个答案 AccountNumber计数= 3 PaymentCounter count = 7

获得计数后,我将使用数据动态填充表格。

我试过这个: int count1 = xmlDocument.Descendants(“AccountNumber”)。Count();

LINQ to XML中的count()将给出元素“AccountNumber”在XML中重复的​​次数,但不会给出子元素的数量。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:0)

是的,可以使用xmlDocument.Descendants("AccountNumber").First().Decendants().Count()

答案 1 :(得分:0)

来自MSDN Returns a collection of the descendant elements for this document or element, in document order AccountNumber elements

如果你有类似下面的内容

var elements = xmlDocument.Descendants(“AccountNumber”)。

您将获得所有 foreach (var xElement in elements ) { var acElt= xElement.Descendants().Count(); //then do your construction here } 你必须遍历每个元素才能获得每个元素的计数

__session

答案 2 :(得分:0)

Descendants("AccountNumber")返回姓名为AccountNumber的孩子,孙子等。你实际上想要AccountNumber元素的孩子。

请参阅MSDN

在您的示例中,只有一个AccountNumber,假设此XML片段对您正在处理的实际文档是真的,并且AccountNumber元素是您可能想要执行此操作的根元素的子元素:

xmlDocument.Element("AccountNumber").Elements().Count()
相关问题