XPath和PHP故障排除

时间:2010-06-04 14:20:27

标签: php xpath

我收到此错误:

Notice: Trying to get property of non-object in

适用于: echo $ result->数据;

这个输出:

Array ()

背景信息

函数返回一个包含XML文件的字符串。

我想从两个标签中获取一些数据并自行处理。

字符串数据

$data="
<SyncML xmlns='SYNCML:SYNCML1.0'> 
<SyncHdr> 
</SyncHdr> 
<SyncBody> 
   <betameta>
         WANT 1
   </betameta> 
   <Add> 
      <Data>
         WANT 2
      </Data>
   </Add> 
</SyncBody> 
</SyncML>";

在上面的数据中,我想要值“WANT 1”和“WANT 2”

到目前为止

代码

$xml = simplexml_load_string($data);
$result = $xml->xpath("/SyncML/SyncBody");
print_r($result);
echo $result->Data;

3 个答案:

答案 0 :(得分:2)

$xml->registerXPathNamespace('default','SYNCML:SYNCML1.0');
$result = $xml->xpath("/default:SyncML/default:SyncBody");

答案 1 :(得分:0)

删除尾部斜杠。

答案 2 :(得分:-1)

我能找到的唯一解决方案如下:

<?php

$data= <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<SyncML> 
<SyncHdr> 
</SyncHdr> 
<SyncBody> 
   <betameta>
         WANT 1
   </betameta> 
   <Add> 
      <Data>
         WANT 2
      </Data>
   </Add> 
</SyncBody> 
</SyncML>
XML;

$xml = simplexml_load_string($data);
$result = $xml->xpath("/SyncML/SyncBody");
print_r($result);
echo $result;

无论如何你可以松开xmlns吗?

这将输出:

Array
(
    [0] => SimpleXMLElement Object
        (
            [betameta] => 
         WANT 1

            [Add] => SimpleXMLElement Object
                (
                    [Data] => 
         WANT 2

                )

        )

)