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

how to find text and extract whole section with 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>,然后取该部分的第二个 <td>。例如: 对于 "Database Name:" Xpath 必须得到 "Social Science Database".

我试过这段代码:

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

但结果只包含第一个,我需要第二个 one.I 尝试了该代码,但没有带来任何结果。

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

你可以试试这个:

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

.. 将您带到 parent。您需要向上遍历 2 个级别并获得第 2 个 td。