如何比较XML模式中的节点深度?

时间:2015-08-10 13:37:22

标签: c# xml linq-to-xml

我正在使用包含具有嵌套选项和序列标记的复杂类型的xml架构文件。那些可以以任何方式彼此嵌套。我需要做的是根据第一个序列或选择标记执行不同的方法。通过.Descendants() - 方法查找序列或选择标记没有问题。但在这种情况下,我只得到我先检查的标签。

我正在考虑在给定节点之后确定第一个序列和选择标记的深度并进行比较。这样我可以确定最高标签。我怎样才能做到这一点?我无法找到确定节点深度的方法。 或者是否有另一种方法来确定节点是否包含高于选择的序列或反过来?

1 个答案:

答案 0 :(得分:2)

您可以编写一个扩展方法,为您提供元素的深度:

public static class ExtensionMethods {
    public static int GetDepth(this XElement element) {
        if (element.Parent == null)
            return 0;
        return element.Parent.GetDepth() + 1;
    }
}

使用此功能,您可以按其深度对所选元素进行排序,并选择您要搜索的元素。