xml — проверка правильности синтаксиса xpath в переполнении стека

У меня есть заданный xpath без документа xml, чтобы попытаться проверить его, но я все еще должен убедиться, что xpath правильно отформатирован.

Вот два примера:

ПРАВИЛЬНЫЙ СИНТАКСИС:
‘// BuyerCookie / ребенок / внучат’

НЕПРАВИЛЬНЫЙ СИНТАКСИС:
«/ Foo / бар / @ Baz / @ мальчик»

Мне нужно проверить, была ли передана правильная или неправильная строка xpath. Есть предложения?

В основном такие же вопросы, как этот:

Проверка синтаксиса выражений XPath

Но решение PHP.

1

Решение

Похоже, что если вы используете DOMXPATH :: query ($ xpath) с вашим селектором XPath для тестирования, он вернет FALSE, если XPath недопустим.

Итак, я бы попробовал:

$doc = new DOMDocument;
$xpath = new DOMXPath($doc);

// this one is good
$str="//a//li/div[@class='foo']";
assert($xpath->query($str) !== false);

// this one is bad
$str="//a/@@bob/uncle";
assert(@$xpath->query($str) === false);

Смотрите также: http://us2.php.net/manual/en/domxpath.query.php

Обратите внимание, что когда вы запускаете $ xpath-> query () в неправильно сформированном XPath, вы также получаете предупреждения PHP; Я поставил @ в последнюю строку, чтобы вы их не видели.

Наконец, одно: xpath, который вы указываете как недействительный — /foo/bar/@baz/@boy — на самом деле не является недействительным.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]