有没有办法将路径作为变量传递给simplexml节点? 这就是我试过的:
//set the path to the node in a variable
$comp = 'component->structuredBody->component';
echo count($xml->component->structuredBody->component); //=== 13
echo count($xml->$comp); //===0
echo count($xml->{$comp});//===0
答案 0 :(得分:0)
您需要的是XPath,更具体地说是SimpleXML' xpath()
method。您可以使用XPath的->
运算符遍历,而不是遍历使用PHP的/
运算符,否则,可以实现您想要的效果:
$comp = 'component[1]/structuredBody[1]/component';
echo count( $xml->xpath($comp) );
您可能认为这可以简化为'component/structuredBody/component'
,但是会找到与表达式匹配的所有可能路径 - 即如果有多个structuredBody
元素,则将搜索所有这些。这可能实际上很有用,但它不等同于$xml->component->structuredBody->component
,它实际上是$xml->component[0]->structuredBody[0]->component
的简写。
有几点需要注意:
registerXPathNamespace()
。