我有一个给定的xpath,没有xml文档来尝试和测试它,但我仍然必须确保xpath的格式正确。
两个例子如下:
正确语法:'//BuyerCookie/儿童/孙子女'
语法不正确:"/foo/bar/@baz/@boy"
我需要检查是否传入了正确或不正确的xpath字符串。有什么建议吗?
基本上exta与这个问题相同:
XPath表达式语法验证
但是PHP解决方案。
如果在xpath选择器中使用DOMXPATH::query($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
——实际上并不是无效的。