Разбор XML-документа сгенерированного Excel'ем

Юрий

Guest
Разбор XML-документа сгенерированного Excel'ем

Есть xml-документ сгенерированный программой Excel.
Ниже пример части этого документа
----
PHP:
   <Row>
    <Cell><Data Type="String">ИМП/ЭКС - Название</Data></Cell>
    <Cell><Data Type="String">Порт отправки - Название</Data></Cell>
    <Cell><Data Type="String">Порт назначения - Название</Data></Cell>
    <Cell><Data Type="String">Тарфирма</Data></Cell>
    <Cell><Data Type="String">Круизная Линия</Data></Cell>
    <Cell><Data Type="String">1 чел.</Data></Cell>
    <Cell><Data Type="String">2 чел.</Data></Cell>
    <Cell><Data Type="String">3 чел.</Data></Cell>
    <Cell><Data Type="String">Доп.1</Data></Cell>
    <Cell><Data Type="String">Доп.2</Data></Cell>
    <Cell><Data Type="String">Дата начала</Data></Cell>
    <Cell><Data Type="String">Срок действия</Data></Cell>
    <Cell><Data Type="String">Доп. информация</Data></Cell>
    <Cell><Data Type="String">Открыть ссылку</Data></Cell>
    <Cell><Data Type="String">Ссылка</Data></Cell>
    <Cell><Data Type="String">Время круиза</Data></Cell>
    <Cell><Data Type="String">Менеджер - Фамилия</Data></Cell>
   </Row>
   <Row>
    <Cell><Data Type="String">ИМП</Data></Cell>
    <Cell><Data Type="String">Ялта</Data></Cell>
    <Cell><Data Type="String">Мадрид</Data></Cell>
    <Cell><Data Type="String">Economu</Data></Cell>
    <Cell><Data Type="String">GreatTour Ltd.</Data></Cell>
    <Cell><Data Type="Number">2430</Data></Cell>
    <Cell><Data Type="Number">5840</Data></Cell>
    <Cell><Data Type="Number">6000</Data></Cell>
    <Cell><Data Type="String">462$</Data></Cell>
    <Cell Index="11" StyleID="s21"><Data Type="DateTime">2004-11-11T00:00:00.000</Data></Cell>
    <Cell StyleID="s21"><Data Type="DateTime">2004-12-31T00:00:00.000</Data></Cell>
    <Cell><Data Type="String">$1</Data></Cell>
    <Cell><Data Type="String">&quot;\\Fileserver\tour.txt&quot;</Data></Cell>
    <Cell><Data Type="String">&quot;\\Fileserver\tour.txt&quot;</Data></Cell>
    <Cell Index="17"><Data Type="String">Иванов Сергей</Data></Cell>
   </Row>
----

Как видно, число ячеек <Cell> в разных рядах <Row> разное, т.к. Exсel решил пустые ячейки не выводить в документ(по-видимому, для экономии места).

Тогда ясно, что значение 12 ячейки первого ряда не является однотипным со значеним 12 ячейки второго ряда.

Поэтому, чтобы разобрать документ методом SimpleXML придется в следующий код
PHP:
foreach ($xml->row as $row) {
....
}
добавлять искусственно анализ аргумента Index и последующие манипуляции по добавлению пустой ячейки.
Для разбора крупного XML документа на такие манипуляции будет уходить много времени.

Есть ли более простой вариант по разбору XML документа сгенерированного Excel'ем?
 

slach

Новичок
тебе какую структуру данных в конце концов надо получить??
и что тебе надо сгенерировать на выходе?
 

Юрий

Guest
slach
Получить нужно массив с данными.
На выходе этот массив вывести в таблицу
 

slach

Новичок
в какую таблицу в SQL таблицу ? или в HTML таблицу ?
короче
обычный WHILE цикл по DOM дереву
проходишь по всем cell
внутри row

перед циклом объявляешь счетчик $Index;

если есть getAttribute('index') то складываешь в соответсвующее значение в $Index и складываешь в соответсвующее значение $rows[$row]->cells[$Index];

ну и $Index++ в конце цикла
 
Сверху