Как очистить JSON, содержащий определенную строку, в Javascript с помощью Xpath
У меня есть такие HTML-данные.
<script type="application/ld+json">{ "name": "apple", "price": 100 }</script>
<script type="application/ld+json">{ "name": "banana", "price": 200 }</script>
<script type="application/ld+json">{ "name": "orange", "price": 300 }</script>
Как я могу очистить данные Json, содержащие «банан», с помощью Xpath.
Например, приведенный ниже код javascript может очистить JSON, содержащий банан. Но он просто очищает только второй JSON.
const htmlString = res;
const doc = new DOMParser();
const string = doc.parseFromString(htmlString, 'text/html');
const result = string.evaluate('//script[@type="application/ld+json"]', string, null, 6, null);
const character = result.snapshotItem(2);
console.log(character);
В приведенном ниже коде переменная равна нулю.
const htmlString = res;
const doc = new DOMParser();
const string = doc.parseFromString(htmlString, 'text/html');
const result = string.evaluate('//script[contains(text(), "banana")]', string, null, 6, null);
const character = result.snapshotItem(1);
console.log(character);
Изображение цели: {"название": "банан", "цена": 200}.
3 ответа
Индекс должен быть
0
, поскольку вы ориентируетесь именно на то, что вам нужно.
const character = result.snapshotItem(0);
Вы также можете добраться туда с помощью:
result = string.evaluate('//script[contains(text(), "banana")]/text()', string, null, 6, null),
character = result.snapshotItem(0).nodeValue;
console.log(character);