Преобразовать комплекс и переменную xml

У меня сложный XML, который я хочу преобразовать в HTML. Некоторые теги нужно заменить в тегах html.

XML:

<root> <div> <p> <em>bol text</em>, some normale text </p> </div> <list> <listitem> normal text inside list <em>bold inside list</em> </listitem> <listitem> another text in list... </listitem> </list> <p> A sample paragraph </p> 

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

Результат, который я хочу, – это (для этого сценария):

 <root> <div> <p> <strong>bol text</strong>, some normale text </p> </div> <ul> <li> normal text inside list <strong>bold inside list</strong> </li> <li> another text in list... </li> </ul> <p> A sample paragraph </p> </root> 

Я делаю рекурсивную функцию для анализа одного единственного узла xml и заменяю его в теге HTML (но не работает):

 $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; $doc->load('section.xml'); echo $doc->saveHTML(); function printHtml(DOMNode $node) { if ($node->hasChildNodes()) { foreach ($node->childNodes as $child) { printHtml($child); } } if ($node->nodeName == 'em') { $newNode = $node->ownerDocument->createElement('strong', $node->nodeValue); $node->parentNode->replaceChild($newNode, $node); } if ($node->nodeName == 'listitem') { $newNode = $node->ownerDocument->createElement('li', $node->nodeValue); $node->parentNode->replaceChild($newNode, $node); } } 

Может кто-нибудь мне помочь? Заранее спасибо.

Это пример полного xml:

 <root> <div> <p> <em>bol text</em>, some normale text </p> </div> <list> <listitem> normal text inside list <em>bold inside list</em> </listitem> <listitem> another text in list... </listitem> </list> <media> <info isVisible="false"> <title> <p>Image title <em>in bold</em> not in bold</p> </title> </info> <file isVisible="true"> <href> "path/to/file.jpg" </href> </file> </media> <p> A sample paragraph </p> </root> 

Который должен быть преобразован в:

 <root> <div> <p> <strong>bol text</strong>, some normale text </p> </div> <ul> <li> normal text inside list <em>bold inside list</em> </li> <li> another text in list... </li> </ul> <!-- the media tag can be presented in two mode: with title visible, and title hidden --> <!-- this is the case when the title is hidden --> <img src="path/to/file.jpg" /> <!-- this is the case when the title is visible --> <!-- the info tag (inside media tag) has an attribute isVisible="false" which means it doesn't have to be shown. --> <!-- if the info tag has visible=true, the media tag must be transated into <div> <img src="path/to/file.jpg" /> <p>Image title <strong>in bold</strong> not in bold</p> <div> --> <p> A sample paragraph </p> </root> 

Related of "Преобразовать комплекс и переменную xml"