返回分层xml的节点级别

Rya*_*yan 2 c# hierarchical-data

在树视图中,您可以检索项目的级别.我试图用给定的输入作为对象来完成同样的事情.

我将用于此示例的XML数据类似于以下内容

<?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>
Run Code Online (Sandbox Code Playgroud)

这个踢我的屁股!

SLa*_*aks 6

你可以递归元素的父母,如下所示:

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

或者,没有递归:

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

    return level;
}
Run Code Online (Sandbox Code Playgroud)