0

次の XML が与えられた場合、XPath クエリを作成して、HTML を含む Body ノードのテキストを取得したいと考えています。

<documents>
 <document>
  <items>
   <item name='Form'>
    Procedure
   </item>
   <item name='Body'>
    <![CDATA[<p>arbitrary html</p>]]>
   </item>
  </items>
 </document>
 <document>
  <items>
   <item name='Form'>
    Process
   </item>
   <item name='Body'>
    Some arbitrary value
   </item>
  </items>
 </document>
</documents>

私は近づくことができます。何かが足りないだけです。(これはそこに行くための最良の方法ではないかもしれませんが、私が近づくことができた唯一の方法です)

//document/items/item[@name='Form'][text()='Procedure']/../item[@name='Body']

CDATA でラップされたコンテンツになり、内部テキストを選択する方法がわかりません。

//document/items/item[@name='Form'][text()='Procedure']/../item[@name='Body']/text()

空の文字列を生成しています

4

1 に答える 1

1

この XPATH を使用して、期待される結果を取得します。

//document[items/item[@name='Form']/text()='Procedure']/items/item[@name='Body']/text()

結果:

<p>arbitrary html</p>

更新しました:

あなたの XML で実際の問題が発生しました。

フォーム ノードの値にスペースが含まれているため、問題が発生しています。

この問題を解決するには、この新しい XPATH をnormalize-space()

//document[normalize-space(items/item[@name='Form']/text())='Procedure']/items/item[@name='Body']/text()

結果:

<p>arbitrary html</p>
于 2012-06-05T16:42:56.390 に答える