yii2-httpclient и XML атрибуты

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

yii2-httpclient и XML атрибуты

Сообщение Cacatuidae »

Приветствую.

Подскажите, пожалуйста, почему httpClient возвращает не все xml атрибуты.
В блоке "Результат", там где список категорий, должны быть еще их ID и ParentID, но почему-то нету.

XML:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2017-10-02 6:01:">
<shop>
  <categories base="4812">
    <category id="4890">Категория 1</category>
    <category id="38709" parentId="4890">Категория 2</category>
  </categories>
</shop>
</yml_catalog>
HTTP client:

Код: Выделить всё

$client = new Client();
        $response = $client->createRequest()
            ->setMethod('get')
            ->setUrl('http://site.com/products.xml')
            ->send();
        VarDumper::dump($response->getData());
Результат:

Код: Выделить всё

[
    '@attributes' => [
        'date' => '2017-10-02 6:01:'
    ]
    'shop' => [
        'categories' => [
            '@attributes' => [
                'base' => '4812'
            ]
            'category' => [
                0 => 'Категория 1'
                1 => 'Категория 2'
            ]
        ]
    ]
]
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: yii2-httpclient и XML атрибуты

Сообщение Cacatuidae »

В общем, судя по исходному коду https://github.com/yiisoft/yii2-httpcli ... er.php#L47 xml парсер ничего не знает о таких атрибутах приводя объект XML к типу array.
В данном случае нужно писать свой парсер https://github.com/yiisoft/yii2-httpcli ... ta-formats
Либо перегружать через DI метод convertXmlToArray, после чего можно разбивать XML как уже нужно. Что я и сделаю.
Ответить