如何使用xpath查找文本并提取整个部分

时间:2017-05-12 15:51:13

标签: html xpath knime

我正在尝试从包含非标准表的书目数据库中解析一些文本。物品的规格可能存在也可能不存在,如果存在,则它们的规格具有相同的标签。例如;所有文章都有标题,但只有部分文章有关键字部分。但当他们有那个部分时,它会显示标准标签:



<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>
&#13;
&#13;
&#13;

这是我的问题。我正在尝试使用Xpath解析Knime的文本,但我无法实现我想要的任何东西。我想查找包含特定文字的<tr>,并获取该部分的第二个<td>。例如: for&#34;数据库名称:&#34; Xpath必须得到&#34;社会科学数据库&#34;。

我试过这段代码:

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

但结果只包含第一个,我需要第二个。我尝试了那个代码,但它什么也没带来。

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

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

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

..带你去父母。你需要遍历2级并获得第2级。