Как разобрать сложный xml

primehostnet

Мастер
Регистрация
28 Июн 2015
Сообщения
170
Реакции
33
Собственно столкнулся с проблемой что не получается разобрать сложный xml который выдает 1с

Код:
 <ДанныеОбмена xmlns="goods-schema.dtd" xmlns:d1p1="goods-schema.dtd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" d1p1:ИБ="УНФ" d1p1:Дата="2017-05-04T14:10:05" d1p1:Пользователь="Пользоватль">
- <Товары>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="c1449a62-7346-11e6-a99b-60e32702ecc8" d3p1:Code="SN00387" d3p1:EAN="_" d3p1:tovar="_rechar bat GP AA NM 2700 mAh 1x2 шт." d3p1:vendor="GP" d3p1:edname="шт" d3p1:parent_code="ФР-00000177" d3p1:reserv_sev="0" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="1" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="270AAHC-BL2" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="23b0c4d1-3dfa-11e6-9a4d-60e32702ecc8" d3p1:Code="SN29387" d3p1:EAN="_" d3p1:tovar="_Стяжка нейлоновая 100x2.5, 100 шт Telecom (CV-100)" d3p1:vendor="" d3p1:edname="шт" d3p1:parent_code="ФР-00000194" d3p1:reserv_sev="0" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="520" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="23b0c4d2-3dfa-11e6-9a4d-60e32702ecc8" d3p1:Code="SN39109" d3p1:EAN="_" d3p1:tovar="_Стяжка нейлоновая 150x2.5, 100 шт Telecom" d3p1:vendor="" d3p1:edname="шт" d3p1:parent_code="ФР-00000194" d3p1:reserv_sev="0" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="32" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="23b0c4d3-3dfa-11e6-9a4d-60e32702ecc8" d3p1:Code="SN36046" d3p1:EAN="_" d3p1:tovar="_Стяжка нейлоновая 200x2.5, 100 шт Telecom" d3p1:vendor="" d3p1:edname="шт" d3p1:parent_code="ФР-00000194" d3p1:reserv_sev="0" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="209" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="23b0c4d4-3dfa-11e6-9a4d-60e32702ecc8" d3p1:Code="SN36047" d3p1:EAN="_" d3p1:tovar="_Стяжка нейлоновая 250x2.5, 100 шт Telecom" d3p1:vendor="" d3p1:edname="шт" d3p1:parent_code="ФР-00000194" d3p1:reserv_sev="0" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="304" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="4512ac0e-7348-11e6-a99b-60e32702ecc8" d3p1:Code="OS07579" d3p1:EAN="_" d3p1:tovar="_Стяжка нейлоновая 150x2.5, 100 шт" d3p1:vendor="" d3p1:edname="шт" d3p1:parent_code="ФР-00000194" d3p1:reserv_sev="1" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="200" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
- <Товар xmlns:d3p1="goods-schema.dtd" d3p1:id="4b336834-7348-11e6-a99b-60e32702ecc8" d3p1:Code="SN28062" d3p1:EAN="_" d3p1:tovar="_Стяжка нейлоновая 200x3.6, 100 шт. LogicPower" d3p1:vendor="LogicPower" d3p1:edname="шт" d3p1:parent_code="ФР-00000194" d3p1:reserv_sev="2" d3p1:reserv_simf="0" d3p1:reserv_yalta="0" d3p1:reserv_kacha="0" d3p1:quantity_sev="100" d3p1:quantity_simf="0" d3p1:quantity_yalta="0" d3p1:quantity_kacha="0" d3p1:pn="NCT-200/36/100" d3p1:warranty="0">
  <price0 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price1 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price3 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_d2 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price4 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price5 xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <pricesimf xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  <price_dbn xmlns="" d3p1:Цена="0" d3p1:Валюта="643" />
  </Товар>
</Товары>
  </ДанныеОбмена>

Пробовал разные библиотеки, но либо не получается выдрать значнения атрибутов, либо вообще ничего не возвращается. Подскажите хорошую библиотеку для разбора подобных xml файлов, на выходе хотелось бы получить массив
 
Мне кажется это из за xmlns="goods-schema.dtd", оно описывает xml документ, по этому атрибуты могут пропадать. Где этот файл можно скачать? В интернете чтото не нашёл. В самом 1ц он есть?
 
Мне кажется это из за xmlns="goods-schema.dtd", оно описывает xml документ, по этому атрибуты могут пропадать. Где этот файл можно скачать? В интернете чтото не нашёл. В самом 1ц он есть?
Сейчас уточню этот вопрос у 1cника, файл выложу если он есть
 
Подскажите хорошую библиотеку для разбора подобных xml файлов, на выходе хотелось бы получить массив
Нестандарт можно в принципе регулярками распарсить.
Но, блин! При обмене не должно быть нестандарта!
Это что за версия 1С? И чем выдает — обработкой? Если да, то её можно переписать.
При импорте по стандарту 1С 8 выдаваться должны 2 файла.
В одном — товары, в другом — предложения.
Структура предложений, offers.xml у меня в файле такая:
Код:
        <Предложения>
            <Предложение>
                <Ид>b8bccde1-aa7a-11e3-801c-441ea1799ab5</Ид>
                <Наименование>Вентилятор для ноутбука HP Pavilion DV6-6000 DV6-6050 DV6-6100 DV6-6090 DV7-6000 0028 (L-2-3)</Наименование>
                <Цены>
                    <Цена>
                        <Представление>11 ZS за шт</Представление>
                        <ИдТипаЦены>7e98bcac-63d7-11e3-95b4-441ea1799ab5</ИдТипаЦены>
                        <ЦенаЗаЕдиницу>11.00</ЦенаЗаЕдиницу>
                        <Валюта>ZS</Валюта>
                        <Единица>шт</Единица>
                        <Коэффициент>1</Коэффициент>
                    </Цена>
                    <Цена>
                        <Представление>8,5 ZS за шт</Представление>
                        <ИдТипаЦены>c5b8f0c1-adea-11e4-b2a7-001999c5e677</ИдТипаЦены>
                        <ЦенаЗаЕдиницу>8.50</ЦенаЗаЕдиницу>
                        <Валюта>ZS</Валюта>
                        <Единица>шт</Единица>
                        <Коэффициент>1</Коэффициент>
                    </Цена>
                    <Цена>
                        <Представление>10 ZS за шт</Представление>
                        <ИдТипаЦены>521c3349-4e14-11e3-aa96-1c6f65539b7a</ИдТипаЦены>
                        <ЦенаЗаЕдиницу>10.00</ЦенаЗаЕдиницу>
                        <Валюта>ZS</Валюта>
                        <Единица>шт</Единица>
                        <Коэффициент>1</Коэффициент>
                    </Цена>
                    <Цена>
                        <Представление>9 ZS за шт</Представление>
                        <ИдТипаЦены>521c334e-4e14-11e3-aa96-1c6f65539b7a</ИдТипаЦены>
                        <ЦенаЗаЕдиницу>9.00</ЦенаЗаЕдиницу>
                        <Валюта>ZS</Валюта>
                        <Единица>шт</Единица>
                        <Коэффициент>1</Коэффициент>
                    </Цена>
                    <Цена>
                        <Представление>19 ZS за шт</Представление>
                        <ИдТипаЦены>521c334f-4e14-11e3-aa96-1c6f65539b7a</ИдТипаЦены>
                        <ЦенаЗаЕдиницу>19.00</ЦенаЗаЕдиницу>
                        <Валюта>ZS</Валюта>
                        <Единица>шт</Единица>
                        <Коэффициент>1</Коэффициент>
                    </Цена>
                </Цены>
                <Количество>5</Количество>
            </Предложение>
Здесь у товара несколько цен, парсится стандартным simplexml_load_file без проблем.
simplexml_load_file доступен с PHP 5.
 
sM84uI6VQHmyUQFkMU11UA.png

Это не похоже на валидный XML
 
Все с чем я работал, такого не содержало.
 
Все с чем я работал, такого не содержало.
Такое бывает когда xml открывают обычны мблокнотом и копируют кусок из него, нажимая на - который вас смутил, можно свернуть блок. Пример положил в файл
 

Вложения

  • newxml.txt
    4,7 KB · Просмотры: 4
Помогите извлечь описание и фото товара из xml ссылки , дело в том, что они находятся тоже по ссылке xml, которая вставлена в ссылку xml...... вот кусочек кода:
Код:
<Products><Product><productCode>17020</productCode>
<productName>Burtnīca šķērs -šaurlīniju 12lp</productName>
<article>4750719017153</article>
<articleCode>32353</articleCode>
<category>12 lapas</category>
<categoryCode>1181</categoryCode>
<manufacturer>ABC JUMS</manufacturer>
<price>0.19</price><discountPrice/>
<vatRate>21.00</vatRate>
<currency>EUR</currency>
<amount>280</amount>
<httpDescription>http://www.freko.lv/xml/draft?c=1a&t=proddesc&pa=32353</httpDescription>
</Product>
я все отсюда могу залить в магазин кроме описания, так как оно в xml ссылке находится, когда я её смотрю, то там еще и фото есть (ссылка на фото). Как это достать оттуда?
Может я не по теме тут пишу, но не нашла похожую тему . Prestashop 1.6
 
Назад
Сверху