Fritz: XMLDOM Objekt ignoriert Leerelemente beim Lesen der XML Datei

Ich bearbeite eine XML Datei mit VB mittels XML DOM Object.
Das geht soweit gut, aber es gibt ein Problem, das ich bisher nicht lösen kann:

Wenn im Text eines XML Elements Leerelemente wie der Zeilenumbruch <br/> stehen, werden diese komplett ignoriert. Ich bekomme nicht den kompletten Text mit x.text geliefert, es fehlen immer die <br/>, somit klebt der Text ohne Zeilenumbruch aneinander. Offenbar sieht XMLDOM die Leerelemente als eigene Kindelemente.

Wie kann ich den kompletten Elementinhalt Inhalt inkl der leeren Kindelemente (Childelements) lesen?

Programmkode Beispiel:

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.childNodes
  temp = vbcrlf & x.nodename &  : " & x.text
next

Msgbox temp

XML Beispiel:

<descr scrField="VMD" maxlng="unlimited">
  Tolleranza permessa della grandezza regolante in caso di un valore imposto di 0% della potenza nominale.
  <br />
  Valori intermedi vengono interpolati linearmente.
</descr>

  1. Hallo!

    Du wirst nicht umhinkommen, entweder alle ChildNodes auszulesen und je nach Typ wieder in XML-Nodes umzubauen oder aber den Inhalt innerhalb einer CDATA-Section auszuliefern.

    Gruß, LX

    --
    RFC 1925, Satz 8: Es ist komplizierter als man denkt.
    1. Ich habe inzwischen eine work-around Lösung gefunden:

      Wenn man statt .text das .xml property verwendet, erhält man den kompletten Inhalt des Elementes, inkl aller Childknoten und Leerelemente. Allerdings hat man dann auch den Elementname inkl. des Ende-tags. Die lösche ich raus und habe damit den gewünschten Inhalt.

      If z.nodename = "descr" Then   ' Das Element "descr" möchte ich haben
       If z.hasChildNodes Then  ' Hat das Element Kinder?
        txtDescr = z.xml  ' Element mit Kinder, dann mit .xml lesen
        ' Ende-tag löschen
        txtDescr = Replace(txtDescr, "</descr>", "")
        ' Anfangs-tag löschen
        txtDescr = Right(txtDescr, Len(txtDescr) - InStr(txtDescr, ">"))
       Else
        txtDescr = z.text  ' Element ohne Kinder, dann mit .text lesen
       End If
      End If