在php中验证xpath语法正确性

时间:2014-09-18 17:41:12

标签: php xml validation xpath syntax

我有一个没有xml文档的给定xpath来尝试对它进行测试,但我仍然需要确保xpath格式正确。

两个例子如下:

正确的语法: '// BuyerCookie /子/孙子'

不正确的语法: “/富/酒吧/ @巴兹/ @男孩”

我需要检查是否传入了正确或不正确的xpath字符串。有任何建议吗?

基本上与这个问题相同的问题是:

XPath expression syntax validation

但是PHP解决方案。

1 个答案:

答案 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 - 事实上并非无效。