У меня есть этот XML:XPath получить узел по значению
<root>
<experiment accessCount="1" downloadCount="1">alfa</experiment>
<experiment accessCount="1" downloadCount="1">beta</experiment>
</root>
И я хотел бы обнаружить, если эксперимент узел со значением альфа существует. Но этот PHP-код возвращает мне все значения.
$this->xml = simplexml_load_file("data/stats.xml") or die("Error: Cannot create object");
$node = $this->xml->xpath("/root[experiment='alfa']");
Где я ошибаюсь?
Обратите внимание на небольшую разницу между этим и другим ответом. Использование '.' будет сочетаться (оно сочетается с' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '') все дети, как бы они ни были глубоки, Это может быть важно, если вам приходится иметь дело со смешанным контентом в элементе 'experiment'. – Abel
Нет, вы не должны использовать text(). Используйте '[. = 'alfa'] '. как советовали @kjhughes. Использование 'text()' приведет к сбою, например, если текст содержит комментарии XML. –