有人知道为什么SimpleXMLElement删除XML中的属性吗?
我有如下所示的XML数据(请注意翻译的“语言”属性):
<events>
<event id="d8f17143-0c67-48aa-a7f1-003a5ddbd28f">
<details>
<names>
<translation language="en">English title</translation>
<translation language="de">German title</translation>
</names>
</details>
</event>
</events>
我像这样通过SimpleXmlElement运行它:
$xmlConvertedData = new \SimpleXMLElement($xml);
我转储了数据,看起来像这样:
object(SimpleXMLElement)#958 (2) {
["@attributes"]=>
array(1) {
["Index"]=>
string(1) "1"
}
["Events"]=>
object(SimpleXMLElement)#956 (1) {
["Event"]=>
array(1) {
[0]=>
object(SimpleXMLElement)#959 (1) {
["Details"]=>
object(SimpleXMLElement)#826 (13) {
["Names"]=>
object(SimpleXMLElement)#834 (1) {
["Translation"]=>
array(2) {
[0]=>
string(32) "English title"
[1]=>
string(33) "German title"
}
}
}
}
}
}
}
...注意,“翻译”不再具有“语言”属性,只是ID号为0和1。我需要知道属性值,因为XML并不总是总是首先显示相同的语言。
(我将缩短的示例代码编辑为一条记录,因此请忽略#958部分)
答案 0 :(得分:0)
请勿在SimpleXML对象上使用任何x
或print_r()
,这将简化输出,因为其中可能有很多。如果要检查已加载的文档,请使用asXML()
...
var_dump()
或输出一种元素的语言...
echo $xmlConvertedData->asXML();
(您还需要更正样本的最后一个元素-echo $xmlConvertedData->event[0]->details->names->translation['language'];
)