2017-05-12 6 views
0

標準のテーブルを含まない書誌データベースからテキストを解析しようとしています。記事の仕様が存在する場合と存在しない場合があり、存在する場合は仕様のタグが同じです。例えば;すべての記事はタイトルを持っていますが、キーワードセクションのみを持つ記事もあります。彼らはそのセクションを持っている場合、それはそのような標準タグで示さ:xpathでテキストを見つけてセクション全体を抽出する方法

<tr> 
 
<td align="right" valign="top" nowrap="nowrap">Database Name: </td> 
 
<td>Social Science Database</td> 
 
</tr> 
 
<tr> 
 
<td align="right" valign="top" nowrap="nowrap">Journal: </td> 
 
<td>Social Science and Education, 2011,8(4):29-42</td> 
 
</tr> 
 
<tr> 
 
<td align="right" valign="top" nowrap="nowrap">Author: </td> 
 
<td>James H.; Chaomei C.</td> 
 
<td align="right" valign="top" nowrap="nowrap">Type: </td> 
 
<td>Journal</td> 
 
</tr> 
 
<tr> 
 
<td align="right" valign="top" nowrap="nowrap">Article Type: </td> 
 
<td>Research Article</td> 
 
</tr> 
 
<tr> 
 
<td align="right" valign="top" nowrap="nowrap">Retrieve Type: </td> 
 
<td>Bibliographic</td> 
 
</tr> 
 
<tr><td align="right" valign="top" nowrap="nowrap">Language: </td> 
 
<td>En</td> 
 
</tr> 
 
<tr> 
 
<td align="right" valign="top" nowrap="nowrap">Abstract Language: </td> 
 
<td>En</td> 
 
</tr>

はここに私の質問です。私はXpathを使ってKnimeとのテキストを解析しようとしていますが、私は何もできません。私は特定のテキストを含む<tr>を探して、そのセクションの2番目の<td>を取りたいと思っています。例: "データベース名":Xpathは "社会科学データベース"を取得する必要があります。

私はこのコードを試してみました:

.//dns:tr//text()[contains(., 'Database Name:')]

をしかし、結果はちょうど最初含まれている、私は2番目のone.Iは、そのコードにしようとした必要があるが、それは何ももたらしません。

.//dns:tr//text()[contains(., 'Database Name:')]/dns:td[*] 
+0

http://stackoverflow.com/questions/3139402/how-to-select-following-sibling-xml-tag-using-xpath –

答えて

1

あなたはこれを試すことができます。

.//dns:tr//text()[contains(., 'Database Name:')]/../../dns:td[2] 

が...親が表示されます。あなたは2つのレベルを横切り、2番目のtdを取得する必要があります。

+0

回答ありがとうございました。なぜあなたは "/../../"をコードに記述するのか説明できますか?それは何の機能ですか? –

+0

私は答えを更新しました。 –

関連する問題