0

System.Xml.XPath.XPathNavigator (XML.XmlDocument.CreateNavigator で作成) のカーソルを XPath-Expression で定義された位置に移動する方法を誰かが知っていますか? 私の問題は、相対パスを使用する必要があることですが、私が知る限り、XPathNavigator は機能を提供しません。

Cadburry: ありがとう、試してみましたが、.moveNext() メソッドが TRUE を返すのは 1 回だけで、ナビゲーターのカーソルはまだルート要素を指しています。(ni.current.InnerXML は私の xml を返します)

私のxmlは簡略化されました:

<Ediakt>
<Header>        
</Header>
<MetaData>  
</MetaData>
<Payload>
    <Layer2>    
    </Layer2>           
    <Layer2>    
    </Layer2>
    <Layer2>    
    </Layer2>
</Payload>
</Ediakt>

私のxPath式は次のとおりです: /Ediakt/Payload/Layer[2]

4

2 に答える 2

0

ノードをXpathExpressionとして渡して選択し、Moveすることで実現します

XPathNodeIterator ni = myNavigator.Select(xPathExpression);
while (ni.MoveNext())
{
///    .....
}
于 2012-07-12T09:41:26.743 に答える
0

インスピレーションを与えてくれた HatSoft に感謝します。

最初に式をコンパイルし、コンテキストを名前空間マネージャーに設定すると、動作します!!

System.Xml.XPath.XPathExpression ex = System.Xml.XPath.XPathExpression.Compile("myexpression");
ex.SetContext(mynamespacemanager);


System.Xml.XPath.XPathNodeIterator ni = nav.Select(ex);
// ni.Current.ReplaceSelf()
//ni.m()
while (ni.MoveNext()) {
}
于 2012-07-13T06:53:23.710 に答える