mirror of
https://github.com/php/php-src.git
synced 2024-11-29 04:46:07 +08:00
simplexml->query returns empty array if no nodes were found
and false if libxml thinks the xpath-expression was invalid. Behaves now the same like DomXPath and fixes Bug #48601 Adjusted a test to reflect that change
This commit is contained in:
parent
9dd75489fe
commit
2ea8e38615
@ -1294,8 +1294,9 @@ SXE_METHOD(xpath)
|
||||
|
||||
result = retval->nodesetval;
|
||||
|
||||
array_init(return_value);
|
||||
|
||||
if (result != NULL) {
|
||||
array_init(return_value);
|
||||
for (i = 0; i < result->nodeNr; ++i) {
|
||||
nodeptr = result->nodeTab[i];
|
||||
if (nodeptr->type == XML_TEXT_NODE || nodeptr->type == XML_ELEMENT_NODE || nodeptr->type == XML_ATTRIBUTE_NODE) {
|
||||
@ -1316,8 +1317,6 @@ SXE_METHOD(xpath)
|
||||
add_next_index_zval(return_value, value);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
RETVAL_FALSE;
|
||||
}
|
||||
|
||||
xmlXPathFreeObject(retval);
|
||||
|
@ -25,7 +25,10 @@ EOF;
|
||||
$sxe = simplexml_load_string($xml);
|
||||
|
||||
var_dump($sxe->xpath("elem1/elem2/elem3/elem4"));
|
||||
//valid expression
|
||||
var_dump($sxe->xpath("***"));
|
||||
//invalid expression
|
||||
var_dump($sxe->xpath("**"));
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
@ -36,4 +39,10 @@ array(1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
array(0) {
|
||||
}
|
||||
|
||||
Warning: SimpleXMLElement::xpath(): Invalid expression in %s on line %d
|
||||
|
||||
Warning: SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed in %s on line %d
|
||||
bool(false)
|
||||
|
Loading…
Reference in New Issue
Block a user