当我想将XML字符串转换为SimpleXMLElement对象时,我遇到了问题。
这是我的PHP代码:
// XML string
$xmlStr = <<<XML
<?xml version='1.0'?>
<document>
<lastname lang="EN">Smith</lastname>
</document>
XML;
// Convert the XML string into an Array
$xml = simplexml_load_string($xmlStr);
$json = json_encode($xml);
$xmlArray = json_decode($json, true);
// Print SimpleXMLElement object
print_r($xml);
echo '<br /><br />';
// Print JSON
print_r($json);
echo '<br /><br />';
// Print XML Array
print_r($xmlArray);
echo '<br /><br />';
我得到了这个结果:
SimpleXMLElement Object ( [lastname] => Smith )
{"lastname":"Smith"}
Array ( [lastname] => Smith )
但是没有&#34; lang&#34;属性,我不知道我做错了什么...... :(
有人可以帮帮我吗?任何想法都将非常感谢!提前谢谢。
答案 0 :(得分:0)
要设置'lastname'标签的文本值'Smith':
$xml->lastname->{'_'}
希望它有所帮助!
答案 1 :(得分:0)
json_encode
函数不会在任何仅为text的节点上添加xml属性。如果最终元素只是文本,并且在这种情况下您需要使用另一个属性作为语言,那么您必须添加另一个封闭标记。我总是使用 _value ,就像执行Mootools
XmlToJsObject库一样。
我写了一个小PHP test。