jes*_*ley 8 php xml curl soap simplexml
我知道这可能是一个新手问题,但请幽默我.在标签中读取带有"soap:"的xml字符串时,xml中不会读取simplexml_load_string().
给出这个脚本:
#!/usr/bin/php
<?php
$s='
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<context xmlns="urn:zimbra"/>
</soap:Header>
<soap:Body>
<AuthResponse xmlns="urn:zimbraAdmin">
<authToken>somevalue</authToken>
<lifetime>123124123</lifetime>
<a n="zimbraIsDomainAdminAccount">false</a>
</AuthResponse>
</soap:Body>
</soap:Envelope>';
print_r(simplexml_load_string($s));
echo "\n\n";
print_r(simplexml_load_string(str_ireplace("soap:", "", $s)));
?>
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
jesse@jesse-debian:~/code/zmsoap$ ./xmltest.php
SimpleXMLElement Object
(
)
SimpleXMLElement Object
(
[Header] => SimpleXMLElement Object
(
[context] => SimpleXMLElement Object
(
)
)
[Body] => SimpleXMLElement Object
(
[AuthResponse] => SimpleXMLElement Object
(
[authToken] => somevalue
[lifetime] => 123124123
[a] => false
)
)
)
jesse@jesse-debian:~/code/zmsoap$
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么会发生这种情况,并且如果有更合适的方法来解决问题,而不是进行字符串替换.
IMS*_*SoP 14
带冒号的标记名称表示标记位于非默认名称空间中.SimpleXML一次只查看一个名称空间,因此您需要使用该->children()
方法专门选择名称空间.
在这种情况下$xml->children('http://www.w3.org/2003/05/soap-envelope')->Body
或$xml->children('soap', true)->Body
两者都应该工作.
由于这个原因和其他原因,不建议使用print_r
调试SimpleXML对象.请尝试使用此专用功能.
这似乎有效.
在此处阅读:使用SimpleXML使用命名空间解析XML
#!/usr/bin/php
<?php
$s='
<soap:Envelope xmlns:soap="urn:zimbra">
<soap:Header>
<context xmlns="urn:zimbra"/>
</soap:Header>
<soap:Body>
<AuthResponse xmlns="urn:zimbraAdmin">
<authToken>somevalue</authToken>
<lifetime>123124123</lifetime>
<a n="zimbraIsDomainAdminAccount">false</a>
</AuthResponse>
</soap:Body>
</soap:Envelope>';
//print_r(simplexml_load_string($s));
//echo "\n\n";
//print_r(simplexml_load_string(str_ireplace("soap:", "", $s)));
$xml = simplexml_load_string($s);
$xml->registerXPathNamespace("soap", "http://www.w3.org/2003/05/soap-envelope");
print_r($xml->xpath('//soap:Body'));
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18013 次 |
最近记录: |