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

本文关键字:模式 节点 深度 xml 何比较 比较 | 更新日期: 2023-09-27 18:07:07

我正在处理一个xml模式文件,该文件包含具有嵌套选择和序列标记的复杂类型。它们可以以任何方式相互嵌套。我需要做的是根据第一个序列或选择标签执行不同的方法。通过. descendants()方法找到序列或选择标记没有问题。但在这种情况下,我只得到我首先检查的标签。

我想确定给定节点后的第一个序列和选择标签的深度并比较它们。这样我就可以确定最高的标签。我该怎么做呢?我找不到确定节点深度的方法。或者是否有其他方法来确定节点是否包含比选择更高的序列,或者相反?

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

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

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

使用这个,你可以按深度对选定的元素进行排序,并取你正在搜索的元素