我有一个没有xml文档的给定xpath来尝试对它进行测试,但我仍然需要确保xpath格式正确。
两个例子如下:
正确的语法: '// BuyerCookie /子/孙子'
不正确的语法: “/富/酒吧/ @巴兹/ @男孩”
我需要检查是否传入了正确或不正确的xpath字符串。有任何建议吗?
基本上与这个问题相同的问题是:
XPath expression syntax validation
但是PHP解决方案。
答案 0 :(得分:0)
如果您使用DOMXPATH :: query($ xpath)和XPath选择器进行测试,如果XPath无效,它将返回FALSE。
所以,我会尝试:
$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上运行$ xpath-> query()时,您还会获得PHP警告;我在最后一行放了@,所以你不会看到它们。
最后,有一点:您提供的无效的xpath - /foo/bar/@baz/@boy
- 事实上并非无效。