molily: XML String -> DOM

Beitrag lesen

Hallo,

Das Problem ist, dass das zurückgegebene XML-Objekt vom Typ "IXMLDOMDocument2" (laut Visual Web Developer) ist und das Kinderelement, auf welches ich zugreifen will vom Typ "IXMLDOMElement" ist. Normale DOM Knoten (im HTML Dokument) sind wie ich das jetzt gesehen hab vom Typ "DispHTMLElement"

Ja, klar. In dem XML-DOM hast du Zugriff auf dessen Element, wie es im DOM-Core beschrieben ist. Für HTML-Dokumente existiert noch ein genaueres, spezifischeres DOM, das ist das Kern-DOM plus HTML-Eigenheiten.

Damit funktionieren sämtliche Mootools-Funktionen, die normalerweise auf den DOM Baum des HTML-Dokuments funktionieren auf dieses XML-Element nicht!

Ja, das ist möglicherweise eine Dummheit von Mootools, oder aber du nutzt Methoden, die auch wirklich nur auf HTML-Elemente anwendbar sind.

Also ich brauche sie nicht unbedingt, aber sie machen das Leben erheblich einfacher und ehe ich jetzt den ganzen Code verändere, alle Mootools Funktionen wieder rausnehme und durch Standard-Funktionen ersetze frag ich lieber hier, ob jemand ne Idee hat. ;)

Höchstwahrscheinlich nicht.

Die wichtigste Funktion ist eigenlich Element.getElement/s, womit man mittels CSS-Selektor im DOM-Baum suchen kann.

Ich weiß ja nicht, wie kompliziert dein XML-Dokument ist, aber vielleicht kommst du schon mit getElementsByTagName ziemlich weit. Das ist nämlich auch im Core-DOM verfügbar.

.responseXML.getElementsByTagName("element")[x]
.responseXML.getElementsByTagName("element")[x].getElementsByTagName("unterelement")[y] usf.

Normalerweise mach ich sowas auch mit JSON, aber hier geht es leider nicht nur um Dateiübertragung, sondern auch um die Übertragung eines DOM-Baumes (der im XML-Dokument definiert ist)

HTML-Elemente in ein XML-Dokument direkt einzubetten hat eigentlich keine Vorteile. Du musst ohnehin mit der String-Serialisierung arbeiten, wie du es ja tust.
(Man könnte stattdessen den Knotenbaum einfach vom XML-DOM ins HTML-DOM herüberzukopieren, aber das kann der IE nicht.)

welchen ich dann direkt (also nach ein paar Operationen darin) ins HTML-Dokument einfüge.

Und wieso spricht das gegen JSON? Notierst du z.B. { html : "<p>Hallo Welt</p>" } und schreibst den Code mit innerHTML in ein bestehendes HTML-Element. Das geht am schnellsten, als wenn du in einem XML-String herumwurschtelst.

Ich weiß ja nicht, was du sonst noch für Daten hast, aber HTML-Code würde ich immer als String in einem JSON-Objekt übertragen. Damit kannst du auch alle in XML möglichen Strukturen abbilden und der Zugriff auf die Daten geht einfacher als über DOM.

Mathias