Могу ли я передать что-либо, кроме файла, в SimpleXmlIterator? - PullRequest
0 голосов
/ 05 ноября 2010

Я пытаюсь преобразовать строку XML в массив. SimpleXmlIterator принимает только путь к файлу в качестве параметра. Есть ли способ передать строку?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010

Согласно документации:

SimpleXMLIterator::__construct ( string $data [, int $options [, bool $data_is_url [, string $ns [, bool $is_prefix ]]]] )

Поэтому загружается строка:

$it = new SimpleXMLIterator ($xml_string);

Загружается файл:

$it = new SimpleXMLIterator ($xml_filename, 0, true);
1 голос
/ 05 ноября 2010

Где ты это видишь? SimpleXMLIterator принимает строку как XML-данные для конструктора по умолчанию ... Вы можете передать ему имя файла в первом параметре, установив третий параметр в true, но по умолчанию false ...

И asXml() имеет необязательный параметр $filename, но вы можете оставить его, если хотите, и он вернет строку ...

1 голос
/ 05 ноября 2010

Подпись ctor равна

SimpleXMLIterator::__construct ( 
    string $data [, 
        int $options [, 
            bool $data_is_url [, 
                string $ns [, 
                    bool $is_prefix ]]]] )

, чтобы вы могли передать и строку, и файл, изменив $data_is_url:

По умолчанию data_is_url имеет значение FALSE. Используйте TRUE, чтобы указать, что данные представляют собой путь или URL-адрес документа XML, а не строковые данные.

Кроме того, см. Первый пользовательский комментарий в руководстве по PHP для SimpleXmlIterator для примера того, как превратить XML в массив . В примере используется файл, но у вас не должно возникнуть проблем с его адаптацией к вашим нуждам.

...