<?xml version="1.0" encoding="UTF-8"?>
<x:NetworkRequest xmlns:x="http://www.google.com" xmlns:xsi="http://www.w3.org">
<Version>2.0.0</Version>
<IpAddress>127.0.0.1</IpAddress>
</x:NetworkRequest>
我试过
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><xmlns:x:NetworkRequest></xmlns:x:NetworkRequest>');
$xml->addAttribute('xmlns:x','http://www.google.com');
$xml->addAttribute('xmlns:xsi','http://www.w3.org');
$xml->addChild('Version','2.0.0');
$xml->addChild('IpAddress','127.0.0.1');
echo $xml->asXML();
得到了:
<?xml version="1.0" encoding="UTF-8"?>
<x:NetworkRequest x="http://www.google.com" xsi="http://www.w3.org">
<Version>2.0.0</Version>
<IpAddress>127.0.0.1</IpAddress>
</x:NetworkRequest>
xmlns:
和x="http://www.google.com"
缺少 xsi="http://www.w3.org
前缀
答案 0 :(得分:0)
我尝试在本地运行您的代码,但它不会执行。
我收到以下错误警告:
警告:SimpleXMLElement :: __ construct()[simplexmlelement .-- construct]: 命名空间错误:无法解析QName&#39; xmlns:x:&#39;在 第3行的C:\ wamp \ www \ test.php
所以,我有这个懒惰的建议(看作你生成的xml不是那么复杂或需要动态修改;我完全避免使用SimpleXMLElement类):
<?php
function getNetworkRequestXML($version, $ip_address) {
return '<?xml version="1.0" encoding="UTF-8"?>
<x:NetworkRequest xmlns:x="http://www.google.com" xmlns:xsi="http://www.w3.org">
<Version>'. $version .'</Version>
<IpAddress>'. $ip_address .'</IpAddress>
</x:NetworkRequest>';
}
var_dump( getNetworkRequestXML('2.0.0', '127.0.0.1') );
?>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<x:NetworkRequest xmlns:x="http://www.google.com" xmlns:xsi="http://www.w3.org">
<Version>2.0.0</Version>
<IpAddress>127.0.0.1</IpAddress>
</x:NetworkRequest>