PHP SimpleXML вопрос ... итерации по каждой строке XML определения используемого тега - PullRequest
0 голосов
/ 26 января 2011

Я промежуточный разработчик PHP, пытающийся сделать свои первые снимки при разборе XML.Я понимаю основы, циклически проходя через узлы и печатая их и их атрибуты.Одна вещь, на которой я заблудился, это то, как я проверяю и записываю условия для имен тегов в XML-документе?

Итак, мне нужно прочитать каждую строку XML-файла:

Определите, является ли он открытым тегом <level>, и замените его на <UL>. Определите его тег <file>, замените его на <li>file</li>. Определите его тег </level> и замените его на </ul>

* 1012.* У тегов уровня есть атрибуты, которые отличают их друг от друга.

XML выглядит примерно так

<level dirname="1">
     <file>Filename1</file>
     <file>Filename2</file>
     <file>Filename3</file>
     <file>Filename4</file>
 </level>
<level dirname="2">
     <file>Filename1</file>
     <file>Filename2</file>
     <file>Filename3</file>
     <file>Filename4</file>
 </level>
<level dirname="3">
     <level dirname = "5">
            <file>Filename1</file>
            <file>Filename2</file>
            <file>Filename3</file>
            <file>Filename4</file>
     </level>
 </level>

в итоге он должен выглядеть так:

<ul>
     <li>Filename1</li>
     <li>Filename2</li>
     <li>Filename3</li>
     <li>Filename4</li>
 </ul>
<ul>
     <li>Filename1</li>
     <li>Filename2</li>
     <li>Filename3</li>
     <li>Filename4</li>
 </ul>
<ul>
     <ul>
            <li>Filename1</li>
            <li>Filename2</li>
            <li>Filename3</li>
            <li>Filename4</li>
     </ul>
 </ul>

Обратите внимание наВложенные теги <level> .... из-за этого я не могу просто отобразить <ul> </ul> и затем выполнить цикл для тегов <li> .... Мне нужно взять каждый элемент в XML-файле и решить, какой тегзамените его на

Любая помощь будет отличной.

Спасибо

Крейг

1 Ответ

1 голос
/ 26 января 2011

Вам необходимо создать рекурсивную функцию.Это проверит, есть ли вложенные уровни, и если это так, он сгенерирует их с той же функцией.

Обратите внимание, что вам нужно привести файлы-узлы с помощью (строки), чтобы распечатать их!1004 *

Это будет работать.Но ваш XML не правильно сформирован!Добавьте корневой элемент покрытия и замените) на>!

...