2016-05-10 4 views
0

次の構造を検討してください:私は<TD>ノードのリストを取得したいが、それは子ノードを持たない(あるいは、それは「テーブル」という名前の子を持っていない場合にのみXPathで内部の子要素を除外していますか?

<Table> 
    <TR> 
     <TD> 
      <Table> 
       <TD></TD> 
      </Table> 
     </TD> 
     <TD>Value 1</TD> 
     <TD>Value 2</TD> 
     <TD>Value 3</TD> 
     <TD></TD> 
    </TR> 
</Table> 

をこの特定の例では)。私は余分な<TD><TABLE>ノードをnotオプション - //table/tr[not(td/table)]を使用してフィルタリングしようとしましたが、空のオブジェクトがあります。最終的な結果は4 <TD>のオブジェクト(値1〜3および空の値1)のリストにする必要があります。どうしたらいいですか?

答えて

2

あなたは次のように子供<table>を持っていない<td>の要素を選択することができます

//table/tr/td[not(table)] 

をしかし、あなたは<table>が含まれていparticlar <td>ことを除いて、<tr>要素を選択することはできません。 XPathはソースXMLに存在する部分のみを選択することができます。特に、<tr>要素はXMLに4 <td>しか含まれていません。

+0

私はそれが不可能であることを知りませんでした。だから私の他の選択肢は何ですか?プログラムによってこの特定のノードを解析しませんか? – Okiba

+0

ターゲット ' 'を見つけて、プログラムで「」内のすべての「​​」と「

」という子を見つけ出し、それらを削除します。 – har07

+0

はい、それは私が思ったことです。よかった。ありがとう :) – Okiba

関連する問題