1

以下の例を使用して、xPath を使用して 2 つの異なる要素の最初の出現を見つけたいと思います。たとえば、b と d のどちらが先に現れるかを調べたいとします。b が d の前にあることは明らかです (ツリー レベルではなく、トップダウンで見てください)。しかし、xpathを使用してこれを解決するにはどうすればよいですか?

<a>
   <b>
   </b>
</a>
<c>
</c>
<d>
</d>

現在、次のコードを使用して見つけたノードセットの最初の要素を取得することで、ノード (この場合は b と d) を見つけます。

String xPathExpression = "//*[local-name()='b']";
XPathNodeIterator nodeSet = (XPathNodeIterator)navigator.Evaluate(xPathExpression);

String xPathExpression = "//*[local-name()='d']";
XPathNodeIterator nodeSet = (XPathNodeIterator)navigator.Evaluate(xPathExpression);

xpath を使用すると、b と d のどちらが先かわかりません。

4

3 に答える 3

4

ツリーをドキュメント順(要素の出現順)にスキャンします。たまたまこれがデフォルトの検索順序であり、必要なのは<b/>or<d/>ノードである最初の要素を選択することだけです。

//*[local-name() = 'b' or local-name() = 'd'][1]

名前が必要な場合は、別のlocal-name(...)呼び出しを追加します。

local-name(//*[local-name() = 'b' or local-name() = 'd'][1])
于 2013-09-25T20:47:09.557 に答える