У меня есть заданный xpath без документа xml, чтобы попытаться проверить его, но я все еще должен убедиться, что xpath правильно отформатирован.
Вот два примера:
ПРАВИЛЬНЫЙ СИНТАКСИС:
‘// BuyerCookie / ребенок / внучат’
НЕПРАВИЛЬНЫЙ СИНТАКСИС:
«/ Foo / бар / @ Baz / @ мальчик»
Мне нужно проверить, была ли передана правильная или неправильная строка xpath. Есть предложения?
В основном такие же вопросы, как этот:
Проверка синтаксиса выражений XPath
Но решение PHP.
Похоже, что если вы используете 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
— на самом деле не является недействительным.
Других решений пока нет …