如何使用xpath从XML获取所有文件内容?

时间:2015-09-11 13:10:24

标签: php xml xpath

我正在开发PHP 5.6.3

以下是$ xml包含XML内容的代码。

$xml  = '<TOPTag><Order><doc DocumentName="Doc1">TEST1</doc><doc DocumentName="Doc2">TEST2</doc></Order></TOPTag>';
$stk  = simplexml_load_string($xml);
foreach($stk->xpath('/TOPTag/Order/doc') as $doc)
{
    echo "<pre>";
    print_r($doc);
    echo "</pre>";
}

我需要包含所有doc xpath的doc内容的所有数据。

实际上,上面代码的结果是下面没有第一个对象的doc内容。它只返回最后一个对象的doc内容。

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [DocumentName] => Doc1
        )
    [0] => TEST1  <- NOT COMING in OUTPUT - PHP VERSION 5.6.3
)
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [DocumentName] => Doc2
        )

    [0] => TEST2
)

我们需要获取所有对象的所有数据(文档内容)。

你能告诉我吗?

1 个答案:

答案 0 :(得分:0)

我不是百分之百确定为什么你的for-each不起作用,但是看一下来自org/apache/commons/math4/optim/nonlinear/scalar/noderiv/的例子:

while(list( , $node) = each($result)) {
    echo '/a/b/c: ',$node,"\n";
}

并将其应用于您的代码:

$result = $stk->xpath('/TOPTag/Order/doc');
while(list( , $node) = each($result)) {
{
    echo "<pre>";
    print_r($node);
    echo "</pre>";
}

或者,这可能也有效(未经测试):

foreach($stk->xpath('/TOPTag/Order/doc') as $doc)
{
    echo "<pre>";
    print_r($doc->asXML());
    echo "</pre>";
}