2011-07-07 27 views
3

は、次のXMLを仮定:XPathを使用してXMLで兄弟ノードを選択するにはどうすればよいですか?

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <info> 
     <code> 
      ABC 
     </code> 
     <desc> 
      A 
     </desc> 
    </info> 
    <info> 
     <code> 
      DEF 
     </code> 
     <desc> 
      A 
     </desc> 
    </info> 
    <info> 
     <code> 
      XYZ 
     </code> 
     <desc> 
      B 
     </desc> 
    </info> 
</root> 

にはどうすれば 'A' のdesc値を持つcodeのすべての要素を選択することができますか?

私は、次のXPathを試みたが、それは私に何も与えなかっ:

/root/info[desc='A'] 

答えて

5

@Jimギャリソンは

/root/info[normalize-space(desc)='A']/code 
あなたは <desc>normalize-space()を使用する必要がありますが、あなたはかなりあなたが /code(および normalize-space())を追加していたXPathを保つことができ、言ったように
2

はこれを試してみてください:

/root/info/code[normalize-space(../desc/text())='A'] 

すなわち、あなたが望むノード(/root/info/code)を条件でフィルタリングしてください。 normalize-space()が必要なのは、ソース文書の値の両側に空白があるためです。

関連する問題