【问题标题】:how to find text and extract whole section with xpath如何使用 xpath 查找文本并提取整个部分
【发布时间】:2026-01-19 21:05:02
【问题描述】:

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

<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 解析文本,但我无法实现我想要的任何东西。我想找到包含特定文本的&lt;tr&gt;'s 并获取该部分的第二个&lt;td&gt;'s。例如: 对于“数据库名称:”Xpath 必须获取“社会科学数据库”。

我试过这段代码:

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

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

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

【问题讨论】:

标签: html xpath knime


【解决方案1】:

你可以试试这个:

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

.. 带你去父母那里。您需要向上遍历 2 个级别并获得第 2 个 td。

【讨论】:

  • 感谢您的回答,终于成功了。你能解释一下为什么你把“/../../”放到代码中。它的作用是什么?