SimpleXMLElement 正在删除属性 (php 7.2)

SimpleXMLElement is removing attributes (php 7.2)

有人知道为什么 SimpleXMLElement 会删除我的 XML 中的属性吗??

我有 XML 看起来像这样的数据(注意翻译 "language" 属性):

<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"
                        }
                    }
                }
            }
        }
    }
}

...注意 "translation" 不再具有 "language" 属性,只有 ID 号 0 和 1。我需要知道属性值,因为 XML 并不总是先显示相同的语言。

(我将示例代码编辑为一条记录,所以请忽略#958部分)

不要在 SimpleXML 对象上使用任何 print_r()var_dump(),这将缩短输出,因为可能有很多输出。如果要检查加载的文档,请使用 asXML()...

echo $xmlConvertedData->asXML();

或输出单元素语言...

echo $xmlConvertedData->event[0]->details->names->translation['language'];

(您还需要更正样本的最后一个元素 - </events>