Как очистить 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);

Почему xpath?

Вы также можете добраться туда с помощью:

      result = string.evaluate('//script[contains(text(), "banana")]/text()', string, null, 6, null),
character = result.snapshotItem(0).nodeValue;
console.log(character);
Другие вопросы по тегам