2010-11-24 7 views
1

私の目的は、各 "my_class" divのtext3とtext5の連結を含む文字列のリストを取得するために、XPath評価を1つだけ使用してxml構造体をリクエストすることです。連結されたテキストノードのリストを取得する方法

構造の例を以下に示す:これは私が結果のリストを取得することを意味します

<div> 
    <div> 
     <div class="my_class"> 
      <div class="my_class_1"></div> 
      <div class="my_class_2">text2</div> 
      <div class="my_class_3"> 
       text3 
       <div class="my_class_4">text4</div> 
       <div class="my_class_5">text5</div> 
      </div> 
     </div> 
     <div class="my_class_6"></div> 
    </div> 
    <div> 
     <div class="my_class"> 
      <div class="my_class_1"></div> 
      <div class="my_class_2">text12</div> 
      <div class="my_class_3"> 
       text13 
       <div class="my_class_4">text14</div> 
       <div class="my_class_5">text15</div> 
      </div> 
     </div> 
    </div> 
</div> 


を - インデックス内の1 => text13 text15

- インデックス0 =>テキスト3 text5

私は現在、my_classノードだけを取得できますが、除外したいtext12を使用できます。または連結されていない各文字列のリスト。

どうすればいいですか?

ご協力いただきありがとうございます。

EDIT:

//my_class/my_class_3 

をし、そのから.innerTextを取得する:私はあなただけを使用できませんでした私の例

答えて

1

EDIT働くかもしれない

concat(/div/div/div[@class=my_class]/div[@class=my_class_3]/text(), ' ', /div/div/div[@class=my_class]/div[@class=my_class_5]/text()) 

:今の質問は変更されているが...

は、XPath 1.0:そのようなありません「文字列のリスト」のようなものデータ型。これらの選択された要素(のすべてのの文字列値

/div/div/div[@class='my_class']/div[@class='my_class_3'] 

そして、あなたのホスト言語の適切なDOMメソッドでを取得する:あなたがしたいテキストノードのすべてのコンテナ要素を選択するには、この表現を使用することができますすべての子孫テキスト・ノードの連結)したい descendatテキストノードと適切な相対するXPathまたはDOMメソッドでその文字列値を連結します。

text()[1]|div[@class='my_class_5'] 

のXPath 2.0:としてはあり等値データ型。

/div/div/div[@class='my_class'] 
      /div[@class='my_class_3'] 
       /concat(text()[1],div[@class='my_class_5']) 
+0

兄弟ノードで複数のテキストコンテンツを取得することは不可能であることを意味しますか? – carpediem

+0

@carpediem:XPathはノードを選択します。必要なすべてのテキストノードを選択できますが、結果はノードセットになります(それらの間の "連結"関係ではありません)。私のパスは、あなたが望むテキストノードの**すべてのコンテナ**を選択します。 –

+0

@Alejandro&@Paul:Ok。いくつかのテストの後、これは動作します。私はすでにこの機能を試していましたが、最終的には結果セットの検索方法が間違っていました。この場合、キャストを変更しなければなりませんでした。助けてくれてありがとう – carpediem

0

に正確に私の検索からtext4とtext14を削除しますか?スペーシングクリーンアップには少しの間違いがあるかもしれませんが、内部テキスト(クラス4と5のものを含む)をすべて含んでいて、タグは含まれていないはずです。


編集:clairification後

+0

はい。あなたは、絶対に正しい。私は私の例を構成するのに時間をかけましたが、それは私の問題とまったく同じではないことに気付きました。実際、私の本当の問題は、たとえば、text4とtext14のないこのタグのコンテンツ(my_class3)を取得することです。私はそれを正確に修正するつもりです。 – carpediem

関連する問題