gpt4 book ai didi

c# - xPath 通过 XPathNavigator 对象而不是通过表达式求值查找祖先

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:15 25 4
gpt4 key购买 nike

我正在尝试查找某个节点的祖先。我们称它为“NodeA”。我得到了“NodeA”节点的列表,并想查找其祖先以检查某个属性值。这是我检索所有“NodeA”节点的代码:

String xPathExpression = "//*[local-name()='NodeA']";
XPathNodeIterator nodeSet = (XPathNodeIterator)navigator.Evaluate(xPathExpression);
foreach (XPathNavigator item in nodeSet)
{
// Iterate through ancestors in here.
}

在“//Iterate through ancestors in here”区域中,我可以通过表达式评估我的节点并通过以下方式获取祖先列表(对于每个“NodeA”):

XPathNavigator item;
var ancestorExpression = string.Format("//*[name()='{0}']/ancestor-or-self::*", item.Name);
XPathNodeIterator ancestors = (XPathNodeIterator)navigator.Evaluate(ancestorExpression);

但是,这似乎是多余的,因为我有原始的 xml 和一个 XPathNavigator 实例,我是否可以在那个时候获取我的祖先而不必通过导航器计算表达式?类似于以下内容(其中 item 是 XPathNavigator 类型):

item.GetAncestors();

Helper.GetAncestors(fullXML, item)

我知道该项目上有一个 SelectAncestors 方法,但我没能让它发挥作用。但如果是这样,一个例子将不胜感激

<NodeAGrandDaddy>
<NodeADaddy>
<NodeA>
<NodeA/>
<NodeADaddy/>
<NodeAGrandDaddy/>

最佳答案

好吧,你可以使用 Select 方法和 ancestor-or-self::*,即:

item.Select("ancestor-or-self::*")

关于c# - xPath 通过 XPathNavigator 对象而不是通过表达式求值查找祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21690489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com