добавление php xmlWriter в существующий узел - PullRequest
0 голосов
/ 23 июля 2011

У меня есть ситуация, когда был какой-то старый код, который использует поток xmlWriter для разбора файлов, и для каждого файла пишите элемент с таким именем, это прекрасно работает, когда имена файлов уникальны.

$xml = xmlWriter
foreach file in files
    $xml->startElement($fileName)
        ....existing logic adding file content to the new element.   
    $xml->endElement

Но теперь требование изменилось, и у меня могут быть файлы с тем же именем, но для созданного xml должен быть только один элемент на уникальное имя файла.

Есть ли простой способ сделать это с /o сильно изменил свой существующий код?я знаю, что это против того, чтобы быть потоком, но жизнь - отстой, верно?

1 Ответ

0 голосов
/ 23 июля 2011

Я вижу несколько решений, но все они сводятся к созданию нескольких узлов.

Первый - это несколько узлов для нескольких файлов, но у каждого файла есть атрибут пути. Учитывая это:

$fl1 = '/home/the_spleen/spleen.txt';
$fl2 = '/home/the_bowler/not_enough_beer/spleen.txt';

Вывести что-то вроде этого:

<spleen path='/home/the_spleen/'><!-- spleenerficy --></spleen>
<spleen path='/home/the_bowler/not_enough_beer/'><!-- no. just no. --></spleen>

Основная выгода? он позволяет вам создавать и выполнять итерации практически точно так же, как вы это делали. Ущерб? Он избавляется от одного имени, одного узла в parent.children этого узла.

Другим вариантом будет создание подэлементов. Учитывая те же файлы:

<spleen>
   <fl path='/home/the_spleen/'><!-- fl-ify! --></fl>
   <fl path='/home/the_bowler/not_enough_beer/'><!-- drink! --></fl>
</spleen>

Преимущество? Существует связь 1: 1 между уникальными именами файлов и узлами. Ущерб? Вам нужно будет добавить логику рекурсии.

Учитывая эти выборы, я бы лично выбрал первое. Кажется, что добавление логики рекурсии может привести ко всем видам плохости и раздражающего ре-факторинга. Но у меня только ограниченный обзор вашего проекта отсюда.

...