如何在PHP中将带有属性和内部文本的XML标记同时转换为SimpleXMLElement对象?


How do I convert XML tags with attributes and inner text at the same time into a SimpleXMLElement object in PHP?

当我想将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 ) 

但是没有"lang"属性,我不知道我做错了什么…(

有人能帮我吗?任何想法将非常感激!

设置'lastname'标签的文本值'Smith',我这样做:

$xml->lastname->{'_'}

希望有帮助!

json_encode函数不会在任何仅为文本的节点上添加xml属性。如果final元素只是文本,并且在这种情况下需要使用另一个属性作为lang,则必须添加另一个封闭标记。我总是使用_value,与Mootools XmlToJsObject库相同。

我写了一个小的PHP测试