SimpleXMLElement удаляет атрибуты (php 7.2) - PullRequest
0 голосов
/ 05 декабря 2018

Кто-нибудь знает, почему 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"
                        }
                    }
                }
            }
        }
    }
}

... обратите внимание, что у «перевода» больше нет «языка»"атрибут, просто ID номер 0 и 1. Мне нужно знать значение атрибута, потому что XML не всегда сначала показывает один и тот же язык.

(я отредактировал сокращенный пример кода до одной записи, поэтому, пожалуйста,игнорировать часть # 958)

1 Ответ

0 голосов
/ 05 декабря 2018

Не используйте никакие из print_r() или var_dump() для объекта SimpleXML, это приведет к сокращению выходных данных, поскольку их потенциально много.Если вы хотите проверить загруженный документ, используйте asXML() ...

echo $xmlConvertedData->asXML();

или для вывода языка из одного элемента ...

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

(Вам также необходимо исправить последний элемент выборки - </events>)

...