simplexml_load_string函数不在PHP中加载XML文件

时间:2016-07-01 13:31:04

标签: php xml

我忙于EPP注册模块,它通过流服务返回XML。

XML返回正常,但我无法使用PHP的simple_xml_load_stringnew SimpleXMLElement来加载XML以正确加载XML,以便我可以将数据用作对象。

然而,我可以使用asXML()返回XML,因此看起来XML已加载,我无法访问对象中的任何值。对象的print_r()也返回一个空对象(据我所知,这是正确的。)

以下是登录结果的示例:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <epp:epp xmlns:epp="urn:ietf:params:xml:ns:epp-1.0">
   <epp:response>
     <epp:result code="1000">
       <epp:msg>Access granted</epp:msg>
     </epp:result>
     <epp:trID>
       <epp:clTRID>ABC-123456</epp:clTRID>
       <epp:svTRID>OTE-EPP-155A695A3C9-717E</epp:svTRID>
     </epp:trID>
   </epp:response>
 </epp:epp>

我需要访问的是上面的结果代码。

以下是我尝试过的示例PHP:

 // Note that the $var property contains the XML exactly as it is above.
 $result = simplexml_load_string($var); 
 echo $result->response->msg; // Nothing
 echo $result->asXML(); // Returns the XML correctly.
 $result = new SimpleXMLElement($var);
 print_r($result); // Returns an empty object.
 echo $result->response->msg; // Nothing
 echo $result->toXML(); // Returns the XML correctly.

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

根据手册simplexml_load_string有以下参数:

SimpleXMLElement simplexml_load_string ( string $data [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] )

因此,我相信您可以这样加载XML:

simplexml_load_string($var, "SimpleXMLElement", 0, "epp", true);

我希望这适合你。