我忙于EPP注册模块,它通过流服务返回XML。
XML返回正常,但我无法使用PHP的simple_xml_load_string
或new 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.
非常感谢任何想法。
答案 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);
我希望这适合你。