2014-04-28 39 views
0
<?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> 

我试图如何使用PHP SimpleXMLElement创建此XML?

$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

我试图在本地运行代码,也不会执行。

我得到了下面错误警告:

警告:的SimpleXMLElement :: __结构()的SimpleXMLElement .--构建]: 命名空间错误:无法解析的QName '的xmlns:X:' 在 C:\ WAMP \ WWW \ test.php的上线3

所以,我这个懒人的建议(看到,因为你是生产的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> 
+0

那些警告,而不是错误。 – ohho