PHP DOM: nodeValue von Element HTML zuweisen
Bene
- php
Hallo,
ich möchte bestimmten Inhalten eines XML-Dokumentes zusätzliche HTML-Tags zuweisen. Dabei habe ich aber das Problem, dass die Kleiner und Größer-Zeichen der Tags kodiert werden. Ein mit <strong></strong> eingefasster Text wird nicht hervorgehoben, sondern die Tags stehen im Ergebnis sichtbar daneben.
Nachfolgend ein vereinfachtes Beispiel:
$xml = "<outer><inner>abc</inner></outer>";
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadXML($xml);
$item = $doc->getElementsByTagName("inner")->item(0);
$item->nodeValue = "<strong>abc</strong>";
echo $item->nodeValue;
echo "<br />";
echo htmlspecialchars($doc->saveXML($doc));
Das Ergebnis:
abc<?xml version="1.0" encoding="UTF-8"?> <outer><inner><strong>abc</strong></inner></outer>
Könnt ihr mir sagen, wie ich dafür sorgen kann, dass die Kleiner und Größer-Zeichen des Strong-Tags nicht kodiert werden?
Danke und viele Grüße
Bene
Hallo,
jetzt hatte ich vergessen, erneut das Vorschau-Häckchen zu setzen.
Folgende Zusatz-Infos:
Grüße
Bene
Hi,
Könnt ihr mir sagen, wie ich dafür sorgen kann, dass die Kleiner und Größer-Zeichen des Strong-Tags nicht kodiert werden?
In dem du ein neues Element strong erzeugst und einhaengst.
MfG ChrisB
Hi,
vielen Dank für die Antwort. Klarer Denkfehler von mir. Natürlich werden durch das Anhängen der Tags keine Elemente im DOM-Baum erzeugt.
Jetzt stehe ich vor einem neuen Problem:
Mein Beispiel war etwas vereinfacht. In meinem Fall wird das HTML, dass ich dem nodeValue zuweisen möchte erst generiert (durch Textile), d.h. es kann auch verschachtelte Tags geben. Das heißt ich müsste von dem Ergebnis der Generierung einen neuen DOM-Baum erzeugen und diesen dem Node zuweisen.
Gibt es für diesen Fall eine passende Funktion, ich habe leider keine finden können.
Grüße
Bene
Hi,
Mein Beispiel war etwas vereinfacht. In meinem Fall wird das HTML, dass ich dem nodeValue zuweisen möchte erst generiert (durch Textile), d.h. es kann auch verschachtelte Tags geben.
Erzeugt Textile gueltiges XHTML?
Wenn ja -
Das heißt ich müsste von dem Ergebnis der Generierung einen neuen DOM-Baum erzeugen und diesen dem Node zuweisen.
Gibt es für diesen Fall eine passende Funktion, ich habe leider keine finden können.
MfG ChrisB
Hallo,
Erzeugt Textile gueltiges XHTML?
Ja.
- dann hast du eine Funktion dafuer bereits in deinem Code stehen.
Hilf mir mal bitte auf die Sprünge.
Meinst du loadXML? Damit kann ich ja das, was mir Textile liefert wieder in einen DOM-Baum umwandeln, aber wie kann ich diesen Baum wieder beim Node einhängen? Ich kann einem DOMNode ja kein DOMDocument zuweisen und loadXML gibt es ja nur für DOMDocument.
Grüße
Bene
Hi,
Meinst du loadXML? Damit kann ich ja das, was mir Textile liefert wieder in einen DOM-Baum umwandeln, aber wie kann ich diesen Baum wieder beim Node einhängen? Ich kann einem DOMNode ja kein DOMDocument zuweisen
Nein, aber du kannst die Kindelemente eines Documents importieren und einfuegen.
MfG ChrisB
Hi,
Nein, aber du kannst die Kindelemente eines Documents importieren und einfuegen.
Jetzt hab ich es hingekriegt: Nach dem Import der Elemente (http://de.php.net/manual/de/domdocument.importnode.php) konnte ich diese mit appendChild hinzufügen.
Ganz hilfreich fand ich folgenden Artikel: http://www.exponetic.com/blog/blog/2005/05/
ChrisB, vielen Dank für deine Hilfe!
Grüße
Bene