Получить ВСЕ содержимое из XML-узла в виде строки - PullRequest
1 голос
/ 12 мая 2011

Извините, если название было запутанным. Я работаю над синтаксическим анализатором XML, который будет работать аналогично HTML, но облегчит работу не кодерам. Парсер прочитает узел XML и распечатает соответствующий HTML-код. Трудность, с которой я столкнулся, заключается в том, что я хочу иметь доступ ко всему содержимому внутри узла в виде строки (включая любые дочерние узлы). Прямо сейчас я использую PHP Simple XML.

<parent><br> some plane text. some Plane text. <child prop="test" /> more plane text<br> </parent>
Я хочу иметь возможность распечатать:
echo $ xml-> parent [0]; как <br> some plane text. some Plane text. <child prop="test" /> more plane text<br>

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

Спасибо за помощь !!

1 Ответ

2 голосов
/ 01 июня 2011
$xml->parent[0]->asXML();

выведет

<parent> some plane text. some Plane text. <child prop="test" /> more plane text </parent>

Может включать объявление XML в зависимости от элемента. Затем вы можете убрать открывающий и закрывающий теги.

Вы можете сделать это с помощью этой функции:

function xml_contents($node)
{
    $str = $node->asXML();
    $i = strlen($node->getName()) + 2;
    return substr(substr($str, $i), 0, -1 - $i);
}
...