В чем разница между // * [*] и // * [.] В XPath? - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь понять разницу между

//*[.] and //*[*] 

Они возвращают различное количество элементов.

Также, где я могу использовать точка вместо атрибута

 //tag[@Attribute="value"] 

Не только в случае с текстом?А как выглядит синтаксис?Потому что я пробовал

//tag[@.="value"] and //tag[.="value"] 

, а последний работал только в случае текста, но не вместо случая

//tag[@id="value"] 

, например, так когда я могу изменить точку вместо атрибута?

1 Ответ

0 голосов
/ 03 февраля 2019

//*[.] выберет все элементы.Это эквивалентно //*.

//*[*], чтобы выбрать все элементы, у которых есть хотя бы один дочерний элемент.

//tag[@.="value"] синтаксически неверен.

//tag[.="value"] выберет все tag элементы, чье строковое значение равно value.Например, для этого XML

<tag id="r">
  <tag id="a">value</tag>
  <tag id="b">val<br/>ue</tag>
  <tag id="c"><span>val</span><span>ue</span></tag>
  <tag id="f"> value</tag>
  <tag id="g">Value</tag>
</tag>

//tag[.="value"] выберет

<tag id="a">value</tag>
<tag id="b">val<br/>ue</tag>
<tag id="c"><span>val</span><span>ue</span></tag>

См. Также Проверка узлов text () и строковых значений в XPath

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...