SimpleXML получение атрибутов

194
02 ноября 2017, 07:46

Имеется XML файл с таким по типу содержанием

<Catalogue>
    <Item>
        <ID>0</ID>
        <Name>Product name 1</Name>
        <AttributeList>
            <Attribute Name="Attribute name 1" Value="value 1"/>
            <Attribute Name="Attribute name 2" Value="value 2"/>
            <Attribute Name="Attribute name 3" Value="value 3"/>
        </AttributeList>
    </Item>
    <Item>
        <ID>1</ID>
        <Name>Product name 2</Name>
        <AttributeList>
            <Attribute Name="Attribute name 1" Value="value 1"/>
            <Attribute Name="Attribute name 2" Value="value 2"/>
            <Attribute Name="Attribute name 3" Value="value 3"/>
        </AttributeList>
    </Item>
</Catalogue>

С помощью "SimpleXML" прошелся по всем дочерним полям "Item" но никак не смог поместить значения атрибутов в массив products();

<?php
$xml_product_list = simplexml_load_file('xml/katalog.xml');
function getXML($xml_product) {
    // Get products
    $products = array();
    $attributes = array();
    foreach ($xml_product->Catalogue->Item as $item) {
        foreach ($item->AttributeList as $attribute_list)
        $products[] = array(
            'id' => (string) $item->ID,
            'attributes' => $attribute_list
        );
    }
    var_dump($products);
}
echo '<pre>';
getXML($xml_product_list);
echo '</pre>';

Чтобы не делал, либо ошибки, либо в ячейку атрибуты заносится только значения первого тэга "Attribute", но не все остальные... Каким образом можно занести все значения полей "Attribute" в ячейку массива "attributes" для конкретного "Item"?

Answer 1

Попробуйте так:

foreach ($xml_product->Item as $item) {
    foreach ($item->AttributeList as $attribute_list) {
        $products[] = array(
            'id' => (string)$item->ID,
            'attributes' => $attribute_list
        );
    }
}
READ ALSO
undefiened reference [дубликат]

undefiened reference [дубликат]

На данный вопрос уже ответили:

248
Почему не работает программа?

Почему не работает программа?

Почему не работает программа? после выполнения операции "do

203
typedef и пользовательский тип [дубликат]

typedef и пользовательский тип [дубликат]

На данный вопрос уже ответили:

259
Количество компонент связности

Количество компонент связности

Данный код считает максимальную компоненту связностиКак найти их количество? Например,

308