【发布时间】:2016-11-15 18:00:30
【问题描述】:
这是我的问题。我想创建一个函数,它接受一个包含 xpath 的外部变量,一旦函数运行,我想添加到同一个变量以创建一个计数器。
所以我有外部变量:
$node = $xmlDoc->xpath('//a:Order');
然后是带有单个参数的函数,它将采用外部变量 ($node)。像这样:
function loopXML($node) {
i=1; //counter variable
}
现在我想向 $node 添加一个计数器,以便它通过“Order”的所有子级。在函数之外,我会使用:
$child = $xmlDoc->xpath('//a:Order['.$i.']/*');
但在函数内部,我不知道如何连接它。有谁知道我该怎么做?
编辑: 另外,应该注意的是,我已经创建了一个任意命名空间:
foreach($xmlDoc->getDocNamespaces() as $strPrefix => $strNamespace) {
if(strlen($strPrefix)==0) {
$strPrefix="a"; //Assign an arbitrary namespace prefix.
}
$xmlDoc->registerXPathNamespace($strPrefix,$strNamespace);
}
【问题讨论】:
-
你为什么将
$node传递给函数?它是如何使用的? -
该函数的目标是将xml转换为csv。 $node 是要循环通过的 xml 父 xml 标记。 $child 是 $node 的所有子节点。我不得不做很多事情,所以我想创建一个函数来减少冗余,所以我可以只包含我想要提取的 xpath(或 xml 标签)。
-
另外,为什么不在原始节点上使用$xml->children() 属性以便迭代它们?
-
因为我不知道!谢谢!我会试一试,看看它是否有效。如果有我会发帖的。
-
我试过 $nodeC = $nodeP->childNodes;在函数中,但它不起作用。