Standard XML/DOM: HTML-Tags erhalten

Kur0i

Grünschnabel
Ich habe mit DOM eine XML-Datei ausgelesen. Allerdings sind in der Datei bzw. in dem Inhalt auch HTML-Tags, die wegen fehlender CDATA-Definition seitens der XML-Datei von DOM als XML-Tags erkannt werden. Gibt es eine Methode, mit der ich diese Tags wieder als HTML-Tags "erkennen lassen" kann?

Die <br>-Tags habe ich durch ein entsprechendes str_replace() einfach wieder ersetzen können. Allerdings kann ich das mit Tags wie <ul>, <li> und <b> nicht tun, da diese ja bereits in der foreach-Schleife als XML-Tags erkannt werden.

Code:
<?php
  $obj=new DOMDocument();
  $obj->load("index.php.xml");
  $sec=$obj->getElementsByTagName("sicherheitshinweis");
 
  foreach($sec as $value)
  {
    $ids=$value->getElementsByTagName("id");
    $id=$ids->item(0)->nodeValue;
    $id=str_replace("\n","<br />",$id);
   
    $titles=$value->getElementsByTagName("title");
    $title=$titles->item(0)->nodeValue;
    $title=str_replace("\n","<br />",$title);
   
    $contents=$value->getElementsByTagName("inhalt");
    $content=$contents->item(0)->nodeValue;
    $content=str_replace("\n","<br />",$content);
   
    echo "$id :: $title :: $content<br>";
  }
?>

Jemand 'ne Idee?
 
Moin,

soetwas kann es nicht geben, weil ein Element erst durch eine HTML-DTD zu einem HTML-Element wird.

ich glaube aber, das dürfte dir weiterhelfen:
PHP:
function innerXML($me)
{
  $doc  =   new DOMDocument();
  $doc->appendChild($doc->importNode($me,true));
  return($doc->saveHTML());
}

...das liefert dir, vergleichbar mit dem innerHTML aus Javascript, die Source des Inhalts des als Parameter übergebenen Knotens(eine Prüfung auf HTML-Tags erfolgt dort jedoch nicht, es liefert halt alles, was drinnen steht)

Falls du das öfters benötigst, würde ich empfehlen, DOMElement per registerNodeClass() über eine eigene Klasse um diese Funktion zu erweitern, ...man braucht ja recht oft kleine Helfer beim DOM, die Arbeit wird dadurch übersichtlicher, wie ich finde :)
 
Zuletzt bearbeitet:
Zurück