获取 Item 的深度

发布于 2024-08-20 14:32:44 字数 356 浏览 6 评论 0原文

我有这样的 xml:

<A><B>test</B><B><B>test2</B></B><B><B><B>test2</B></B></B></A>

如何使用 linq to xml 获取这些项目的级别

level of test=1 level of test2=2 level of test3=3

我不知道会有多少个节点或有多少个级别将有。我可以将其编写为递归函数,但我认为 linq to xml 可能可以提供更好的东西。

I have xml like this:

<A><B>test</B><B><B>test2</B></B><B><B><B>test2</B></B></B></A>

How can I get the level of each of these items using linq to xml

level of test=1 level of test2=2 level of test3=3

I have no idea how many nodes there will be or how many levels there will be. I can write this as a recursive function but I thought linq to xml might have something better to offer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一萌ing 2024-08-27 14:32:44

假设您已将 XML 作为 XDocumentXElement 对象加载,则

myXElement.AncestorsAndSelf().Count()

应该为您提供以下深度:任何给定的元素。

Assuming you've loaded your XML as an XDocument or XElement object,

myXElement.AncestorsAndSelf().Count()

should give you the depth of any given element.

尐偏执 2024-08-27 14:32:44

当您有根元素时,您可以按如下方式找到每个文本节点的深度:

var depths =
  root.
    DescendantNodesAndSelf().
    Where(e => e.NodeType == XmlNodeType.Text).
    Select(n => new { Text = n.ToString(), Depth = n.Parent.Ancestors().Count()});

When you have a root element you can find depth of every text node as follows:

var depths =
  root.
    DescendantNodesAndSelf().
    Where(e => e.NodeType == XmlNodeType.Text).
    Select(n => new { Text = n.ToString(), Depth = n.Parent.Ancestors().Count()});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文