私のXMLは次のようになります:
<?xml version=\"1.0\"?>
<itemSet>
<Item>one</Item>
<Item>two</Item>
<Item>three</Item>
.....maybe more Items here.
</itemSet>
個々のアイテムの一部は、存在する場合と存在しない場合があります。存在する場合、要素<Item>
2</Item>
を取得したいとします。次の XPath を試しました (C# で)。
XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']")
--- Item twoが存在する場合、最初の要素oneのみが返されます。子として値 2 のアイテムがどこかにある場合、このクエリは itemSet の最初の要素を指すだけかもしれません。この解釈は正しいでしょうか?
だから私は試しました:
XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']/Item[1]")
--- このクエリは、<Item>
itemSet 内で value = 'two' を持つ最初の要素を返します。私は正しいですか?
これはまだ最初の要素oneのみを返します。私は何を間違っていますか?どちらの場合も、兄弟を使用して子ノードをトラバースしてtwoに到達できますが、それは私が見ているものではありません。また、two が存在しない場合、SelectSingleNode は null を返します。したがって、成功した戻りノードを取得しているという事実は、要素 2 の存在を示しているため、 boolean テストでtwoの存在を確認したい場合は、上記の XPath のいずれかで十分ですが、実際には次のように完全な要素が必要です<Item>two</Item>
。私のリターンノード。
[ここでの最初の質問であり、Web プログラミングを扱うのは初めてなので、SO の過去の質問から、上記の XPath と関連する xml をその場で学びました。だから優しくして、私がばかだったり、コミュニティのルールを無視していたりしたら教えてください。ありがとう。]