我正在尝试从包含非标准表的书目数据库中解析一些文本。物品的规格可能存在也可能不存在,如果存在,则它们的规格具有相同的标签。例如;所有文章都有标题,但只有部分文章有关键字部分。但当他们有那个部分时,它会显示标准标签:
<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;
这是我的问题。我正在尝试使用Xpath解析Knime的文本,但我无法实现我想要的任何东西。我想查找包含特定文字的<tr>
,并获取该部分的第二个<td>
。例如:
for&#34;数据库名称:&#34; Xpath必须得到&#34;社会科学数据库&#34;。
我试过这段代码:
.//dns:tr//text()[contains(., 'Database Name:')]
但结果只包含第一个,我需要第二个。我尝试了那个代码,但它什么也没带来。
.//dns:tr//text()[contains(., 'Database Name:')]/dns:td[*]
答案 0 :(得分:1)
你可以试试这个:
.//dns:tr//text()[contains(., 'Database Name:')]/../../dns:td[2]
..带你去父母。你需要遍历2级并获得第2级。