2017-08-25 16 views
0

xpath経由でxpmを使用していますが、 'name'と 'run'の後に次のような出力が得られるようにXPath 1.0の式を探しています。XPath部分文字列を持つノードの子ノードを見つけよう

「// * [contains(name()、 'name')]」を使用して最初の「親ノード」を見つけることは既に動作していますが、その一部で子を見つけることができるかどうかはわかりません名前(以下の任意のレベル数)?

入力:

<root> 
    <NameX> 
     <getLenght> 
     <unit>m</unit> 
     </getLenght> 
     <getStatus> 
     <status>0</status> 
     </getStatus> 
    </NameX> 
    <Name2> 
     <getStatus> 
     <status>0</status> 
     </getStatus> 
     <running> 
     <bit>true</bit> 
     </running> 
    </Name2> 
</root> 

出力:

<running> 
    <bit>true</bit> 
</running> 
+0

あなたは// *が 'てみました[(名()、含まれている '' 名)] // * [contains(name()、 'run')] '? – Andersson

+0

私はすでに彼を試したかどうかはわかりません - 私はmondayに感謝します。ありがとう。 – Max

+0

XPathに正確に何をするのか明確にすることはできますか? – Andersson

答えて

0

アンダーソンの答えが正しい:

//*[contains(name(), 'name')]//*[contains(name(), 'run')] 

高度な例:

少なくとも1つの子要素を持つ親ノード「名前」を検索する場合。 'getLen' または getStat」の場合は、あなたは、このクエリを使用することができます。

//*[contains(name(), 'Name')]//*[contains(name(), 'getLen') or 
contains(name(), 'getStat')]` 

出力:

<NameX> 
    <getLenght> 
     <unit>m</unit> 
    </getLenght> 
    <getStatus> 
     <status>0</status> 
    </getStatus> 
</NameX> 
関連する問題