当前位置: 首页 > 编程语言 > C#

使用Linq和XDocument,能否获取父标签下的所有子元素?Share

时间:2023-04-10 14:14:42 C#

使用Linq和XDocument,我可以获取父标签下的所有子元素吗?我有一个使用Linq和XDocument的XML,我可以提取“摘要”信息,但是如何提取“摘要”选项卡下的“帐户”信息?XDocumentXMLDoc=XDocument.Load("testdata.xml");XElementaccounts=(fromxml2inXMLDoc.Descendants("summary")selectxml2).FirstOrDefault();我如何指定诸如“摘要/帐户”之类的内容,以便它返回下的所有元素?请注意,我有under,我只想要summary标签下的元素。编辑:(安德鲁的解决方案)varaccounts=XMLDoc.Root.Elements("summary").Elements("account");foreach(帐户中的XElementelem){sb.Append(elem.ToString());你应该使用Elements方法:varaccounts=doc.Root.Elements("summary").Elements("account");或者,或者,XPathSelectElements,在这种情况下更简单:varaccounts=doc.XPathSelectElements("/data/summary/account");在这种情况下,您也可以使用Descendants,正如AndrewBarber所建议的那样,但通常只有当您真的想找到具有给定名称的所有后代时才可以使用,而不仅仅是当它是直系孩子时才应该这样做。否则,您的代码会执行大量不需要的搜索,并且可能会返回您不希望返回的元素。varaccountSummaryElems=XMLDoc.Element("summary").Elements("account");这为您提供了摘要元素下的帐户元素集合。然后您可以遍历它们以获取值。编辑使用相同的模式;我正在调用First()而不是FirstOrDefault(),因为如果找不到“account”元素,代码将不会运行。然后你就有了正确的想法来迭代返回的集合。以上是C#学习教程:使用Linq和XDocument,能否获取父标签下的所有子元素?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: