我想掌握格式不同的文档中的一些信息。
我有以下文件:
var getSORMARC = document.evaluate("//*[@id='marcview']/tbody/tr[contains(., '245')]/following-sibling::tr[contains(.,'_c')]/td[contains(.,'_c')]/following-sibling::td[1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
if (getSORMARC.singleNodeValue !== null) {
var SORMARC = getSORMARC.singleNodeValue.innerText;
}
console.log(SORMARC);
<table id="marcview">
<tbody>
<tr>
<td>
<b>Title</b>
</td>
<td>245</td>
<td> </td>
<td>0</td>
<td>_a</td>
<td>Title of the document /</td>
</tr>
<tr>
<td>_c</td>
<td>Author no. 1</td>
</tr>
</tbody>
</table>
和其他文档:
var getSORMARC = document.evaluate("//*[@id='marcview']/tbody/tr[contains(., '245')]/following-sibling::tr[contains(.,'_c')]/td[contains(.,'_c')]/following-sibling::td[1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
if (getSORMARC.singleNodeValue !== null) {
var SORMARC = getSORMARC.singleNodeValue.innerText;
}
console.log(SORMARC);
<table id="marcview">
<tbody>
<tr>
<td>
<b>Title</b>
</td>
<td>245</td>
<td> </td>
<td>0</td>
<td>_a</td>
<td>Title of another document/</td>
</tr>
<tr>
<td>
<b>Publication</b>
</td>
<td>260</td>
<td> </td>
<td> </td>
<td>_c</td>
<td>1995</td>
</tr>
</tbody>
</table>
如您所见,我在两个文档中都使用了XPath选择器:
//*[@id='marcview']/tbody/tr[contains(., '245')]/following-sibling::tr[contains(.,'_c')]/td[contains(.,'_c')]/following-sibling::td[1]
问题是,如果文档不包含文本内容为"_c"
的元素,而该元素直接是文本内容为"245"
的父元素的祖先(孩子),它仍然会给我_c
的{{1}}的同级文本包含文本<td>
,并非如此。
如果运行了javascript代码,它将为我提供以下信息: 第一份文件:作者编号1个 第二份文件:(无)。
我实际上只想捕获"Publication"
具有直接祖先_c
或<td>245</td>
的文本内容。
关于如何做到这一点,我无能为力。我正在尝试以<td>Title ...</td>
开始我的xpath,但是出现一些错误。关于如何使用我的用例有什么想法?
如果可以使用_c
以外的其他方法来实现,那么我很好。