Return node level of hierarchical xml

自古美人都是妖i 提交于 2019-12-24 03:41:24

问题


In a treeview you can retrieve the level of an item. I am trying to accomplish the same thing with the given input being an object.

The XML data I will use for this example would be something like the following

<?xml version="1.0" encoding="utf-8" ?>
<Testing>
  <Numbers>
    <Number val="1">
      <Number val="1.1">
        <Number val="1.1.1">
          <Number val="1.1.2" />
          <Number val="1.1.3" />
          <Number val="1.1.4" />
        </Number>   
      </Number>
      <Number val="1.2" />
      <Number val="1.3" />
      <Number val="1.4" />
    </Number>
    <Number val="2" />
    <Number val="3" />
    <Number val="4" />
  </Numbers>
  <Numbers>
    <Number val="5" />
    <Number val="6" />
    <Number val="7" />
    <Number val="8" />
  </Numbers>
</Testing>

This one is kicking my butt!


回答1:


You can recurse the element's parents, like this:

public static int GetLevel(this XObject node) {
    if (node.Parent == null) return 0;
    return 1 + node.Parent.GetLevel();
}

Or, without recursion:

public static int GetLevel(this XObject node) {
    int level = 0;
    while (null != (node = node.Parent))
        level++;

    return level;
}


来源:https://stackoverflow.com/questions/3053982/return-node-level-of-hierarchical-xml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!