gpt4 book ai didi

c# - 使用 Linq 和 XDocument,我可以获取父标签下的所有子元素吗?

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:41 25 4
gpt4 key购买 nike

我有一个 XML

<data>
<summary>
<account curr_desc='USD' acct_nbr='123' net='1000.00' />
<account curr_desc='USD' acct_nbr='456' net='2000.00' />
</summary>
<details>
<accounts>
<account acct_nbr="123" curr="USD">
<activity color='False' settle_date='02 Jul 2010' amt='580.00' />
<activity color='True' settle_date='09 Jul 2010' amt='420.00' />
</account>
<account acct_nbr="456" curr="USD">
<activity color='True' settle_date='12 Dec 2010' amt='1500.00' />
<activity color='True' settle_date='19 Dec 2010' amt='500.00' />
</account>
</accounts>
</details>
</data>

使用 Linq 和 XDocument,我可以提取“摘要”信息,但如何提取“摘要”标签下的“帐户”信息?

XDocument XMLDoc = XDocument.Load("testdata.xml");
XElement accounts = (from xml2 in XMLDoc.Descendants("summary")
select xml2).FirstOrDefault();

我如何指定类似“summary/account”的内容,以便它返回 <summary> 下的所有元素?请注意,我在 <account> 下有 <detail><accounts>,我只想要摘要标签下的元素。

最佳答案

您应该使用 Elements 方法:

var accounts = doc.Root.Elements("summary").Elements("account");

或者,XPathSelectElements,在本例中更简单:

var accounts = doc.XPathSelectElements("/data/summary/account");

在这种情况下,您也可以使用 Descendants,正如 Andrew Barber 所建议的那样,但一般来说,只有当您真的想找到具有给定名称的所有后代时才应该这样做,而不仅仅是直系子代.否则,您的代码会进行大量不需要的搜索,并且可能会返回您不希望它返回的元素。

关于c# - 使用 Linq 和 XDocument,我可以获取父标签下的所有子元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com