Анализ на XML с PHP

stuklen

Well-Known Member
Здравейте,
Малко съм запенвал с обработката на един xml и ми трябва малко помощ да го измислим.
Става въпрос за анализ на структурата на xml -a и екстрактване на данните в масив.

Ще дам повече разяснения на ЛС или Skype
 
Дай тук направо да помагаме, ако пък не може публично прати на ЛС
 
Не става въпрос за конкретен XML идеята е да стане по-универсално и да може да се изважда структурата на всякакъв вид.
Пример: Има един xml и да се извадят възможните xpath

Код:
 <Worksheet ss:Name=".Артикули">
  <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="7" x:FullColumns="1"
   x:FullRows="1" ss:DefaultRowHeight="15">
   <Column ss:Width="147"/>
   <Column ss:Index="3" ss:Width="170.25"/>
   <Column ss:Width="83.25"/>
   <Column ss:Index="6" ss:Width="78"/>
   <Row>
    <Cell><Data ss:Type="String">Наименование БГ</Data></Cell>
    <Cell><Data ss:Type="String">Артикулен номер</Data></Cell>
    <Cell><Data ss:Type="String">Код</Data></Cell>
    <Cell><Data ss:Type="String">Цена (без ДДС)</Data></Cell>
    <Cell><Data ss:Type="String">Статус</Data></Cell>
    <Cell><Data ss:Type="String">Категория 1</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">RPT-800DU 800VA/AVR/USB</Data></Cell>
    <Cell><Data ss:Type="String">00043</Data></Cell>
    <Cell><Data ss:Type="String">RPT-800DU 800VA/AVR/USB</Data></Cell>
    <Cell><Data ss:Type="Number">52.8</Data></Cell>
    <Cell><Data ss:Type="String">.Aктивен</Data></Cell>
    <Cell><Data ss:Type="String">Дамски обувки</Data></Cell>
   </Row>
  </Table>
 </Worksheet>

Да се извадят xpath в случая
Код:
Worksheet
Worksheet/Table
Worksheet/Table/Column
Worksheet/Table/Row
Worksheet/Table/Row/Cell
Worksheet/Table/Row/Cell/Data
 
Нали за структура питаш? Схема файловете са точно това - описват структурата на даден xml документ.
Тоест на теб ти трябва XML to XSD (така се наричат тези схема файлове), ако ги нямаш налични.
 
До колкото съм запознат схемата валидира XML, а на мен ми трябва, аз да анализирам xml-а без да ми е налична схема. И в последствие да се укаже кой таг каква информация носи през някакъв интерфейс.
 
искаш да парсваш xml ?
Aз съм го правил едно време но с java. Kакъв е проблема с php ?
 
Проблема е, че се опитвам да измисля обучаващ се скрипт, който да прасва XML, а за целта трябва да хвана структурата на XML-a

Ако някой предложи и цялостно решение, ще го заплатя. Но може би ще се наложи комуникация извън темата.
 
Последно редактирано:
Аз нещо немога да схвана какво се опитваш да направиш. Трябва ти скрипт които при подаден XML да ти изкарва как да вземеш стойността на всеки елемент ли?
 
Да, нещо такова.
Така да се получи, че да се избира: този таг съдържа име, този таг съдържа описание, този таг съдържа стойност, а атрибута му е име.. и т.н.
 
Аха, изкуствен интелект.
Почакай още няколко години да го доразвият.
 
Това е идеята на анализа, да се посочва през интерфейс /от човешко същество/, кое на какво съответства.
 
Това ми звучи като рекурсивно обикаляне из XML и показване на стойност и атрибути. Не би трябвало да е нещо свръхестествено.
 
Зареждаш файла в SimpleXML. Имаш обект и можеш да го завърташ. След завъртането плюваш на усеро структура, като можеш да хванеш масивите при завъртането.
Начинанието не е от най-лесните защото ще е нужно да генерира доста УИ елементи.
 
Да, така е. Докарах го до някъде, работи, но ми се струва, че трябва да подходя по друг начин, за да стане по-гъвкаво.
И за това търся решението, което ми убягва.

Дори и някоя библиотека, която върши работата или част от нея, ще е полезна.
 
Схемата ти казва какво има в XML файла. Не е само за валидация.

Ти искаш да разбереш каква му е структурата, какви елементи има. Е точно това ти дава XSD-то.

След като имаш решение на проблема и не си го споделил то никой не може да ти каже какво може да се подобри.

Иначе това което искаш има много решение като някои от тях са:
- xml to xsd
- xml to array
- DOMXpath

След това интерфейса е въпрос на разбирания за това кое е удобно и кое не :D
 
Не винаги XML има схема.
xml to xsd няма такъв гущер. и едната идея е да се направи нещо подобно.
Другите варианти не вършат работа.

За да се стигне до интерфейс, трябва да се измисли гъвкаво разчитане/анализиране на структурата.

Примера за xml данни има по-горе.
 
След като няма схема си правиш. Какви гущери? Даже има хиляди онлайн тулове дето правят от xml - xsd ;).

И другите работи ти вършат работа, но нещо ти се губи.

Да нямаш проблеми с namespaces?
Примера ти е за excel-ски xml, така че лесно може да намериш php class/функция която го парсва :)
 
Не мога да открия, рових се няколко дена, мислих варианти и не можах да измисля нещо по-универсално. Затова реших да пиша във форума.
5 глави мислят повече от една, а 6-та има решение с/у заплащане. ;)
 

Горе