【问题标题】:C# - How can i get the count of child elements using LINQ to XMLC# - 如何使用 LINQ to XML 获取子元素的数量
【发布时间】:2017-07-05 20:05:14
【问题描述】:

这是我正在使用的 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 下的子元素的数量。

我正在寻找这个答案 帐号计数 = 3 PaymentCounter 计数 = 7

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

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

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

有没有办法做到这一点?

【问题讨论】:

  • 您应该从 AccountNumber 元素中获取后代元素,而不是所有 xml。所以,试试看起来像这样的东西:xmlDocument.Descendants("AccountNumber").SelectMany(item=&gt;item.Descendants()).Count()
  • 您应该解析为 AccountNumber 和 PaymentCount 的父级,以便它们最终在同一个组中。
  • 您好,欢迎来到 Stack Overflow,请花点时间通过 welcome tour 了解您在此处的方式(并获得您的第一个徽章),阅读如何创建 Minimal, Complete, and Verifiable example并检查How to Ask Good Questions,这样您就有机会获得反馈和有用的答案。

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


【解决方案1】:

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

MSDN

在您的示例中,只有一个 AccountNumber,假设此 XML 片段对于您正在处理的实际文档是正确的,并且 AccountNumber 元素是您可能想要这样做的根元素的子元素:

xmlDocument.Element("AccountNumber").Elements().Count()

【讨论】:

    【解决方案2】:

    是的,这可以通过使用 xmlDocument.Descendants("AccountNumber").First().Decendants().Count() 来实现。

    【讨论】:

      【解决方案3】:

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

      如果你是这样的话

      var 元素 = xmlDocument.Descendants("AccountNumber")。

      你会得到所有的AccountNumber elements 您必须遍历每个元素才能获得每个元素的计数

       foreach (var xElement in elements )
                  {
                      var acElt= xElement.Descendants().Count(); 
      
                           //then do your construction here 
                  }
      

      【讨论】:

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