Я хотел бы получить некоторую информацию в документах разных форматов.
У меня есть следующий документ:
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
<td>
, содержащего текст"Publication"
, который не должен иметь место.
Если код javascript запущен, он даст мне следующее: Первый документ: Автор №.1 Второй документ: (Ничего).
Я на самом деле хотел только захватить текстовое содержимое, если у этого _c
есть прямой предок <td>245</td>
или <td>Title ...</td>
.
Я нахожусь в своем уме, как это сделать.Я пытаюсь запустить свой xpath с _c
, но я получаю некоторые ошибки.Любая идея о том, как идти о моем случае использования?
Если этого можно добиться, кроме использования document.evaluate()
, я в порядке.