simplexml_load_string返回空结果

时间:2016-12-19 10:14:00

标签: php xml dom simplexml simplexml-load-string

这可能很简单,但我有点卡住了。我想将XML字符串转换为PHP对象。我的XML字符串是:

$a = '<?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <soap:Body>
                <VerifyTxnResponse xmlns="http://www.exmlplekhe.com/">
                    <VerifyTxnResult>BID &lt;11467&gt;</VerifyTxnResult>
                </VerifyTxnResponse>
            </soap:Body>
        </soap:Envelope>';

我尝试了var_dump(simplexml_load_string($a));,但它返回了空SimpleXMLElement个对象。我想获得VerifyTxnResult节点。我认为,&lt;11467&gt;导致了这个问题。可能的解决方案是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

  

我想获得VerifyTxnResult节点

simplexml_load_string函数返回SimpleXMLElement的实例,对于您发布的XML,该实例实际上不为空。

注册命名空间并使用xpath方法获取节点:

$se = simplexml_load_string($a);

$se->registerXPathNamespace('r', 'http://www.nibl.com.np/');

foreach ($se->xpath('//r:VerifyTxnResult') as $result) {
  var_dump((string)$result);
}

示例输出

string(11) "BID <11467>"