Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

XML-Datei erstellen mit HTML-Umlaute

XML-Datei erstellen mit HTML-Umlaute
23.01.2023 08:10:09
Scooter_0807
Hallo zusammen,
Ich habe eine Herausforderung bei der Erstellung von XML-Datei mit VBA.
Vorweg, mein VBA kann eine korrekte VBA Datei erstellen.
ich nutze dafür DOMDocument.
Also, hier ein Codeausschnitt

Dim xmlDoc As DOMDocument
Dim nodePI As IXMLDOMProcessingInstruction
Dim nodeRoot As IXMLDOMElement
Dim nodeLevel1 As IXMLDOMElement
Set xmlDoc = New DOMDocument
Set nodePI = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
Set nodeRoot = xmlDoc.createElement("navigation")
....
Set node = xmlDoc.createElement(nodeName)
node.setAttribute "displayName", (displayName)
...
Später wird das Objekt xml.Doc gespeichert.
xmlDoc.Save (strPath & "\portalNavIdmXml.xml")
Das Problem stellt sich bei node.setAttribute "displayName",(display)
Rein technisch wird eine XML-Node mit dem Attribut "displayName" korrekt erzeugt
z.B. navItemLevel1 displayName="Präsentkoerbe" (die Klammern denkt Euch bitte, die bekomme ich gerade nicht in den Text.
Das Problem stellt sich bei den Umlauten. ich muss die XML-Datei in ein Client auf einem Linux-System einspielen, der die Umlaut als HTML-Code haben will.
In diesem Fall also als ä
Soweit so gut. Also nutze ich im VBA die Replace Funktion
node.setAttribute "displayName", replace((displayName),"ä","ä")
Die Replace Funktion funktioniert. Allerdings interpretiert die verwendete Methode später das "&" und ersetzt dies selbständig.
Das Ergebnis in der Datei ist
Ich brauche den Umlaut als ä
In der XML-Datei steht aber ä
Ich habe mir das object xmlDoc beim Verlauf durch den Code angesehen. Es behält immer den Eintrag ä.
Erst beim Speichern mit xmlDoc.Save erscheint in der Datei ä.
Ich vermute (!) also, dass das Problem in der Save-Methode liegt.
Hat einer von Euch eine Idee, wie ich das Ersetzen von & durch & verhindern kann?
Vielen Dank im Voraus!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XML-Datei erstellen mit HTML-Umlaute
23.01.2023 12:44:39
Yal
Hallo,
hast Du mit Zeichencode probiert? (völlig ahnungslos meinerseits)
Ä Ä
Ö Ö
Ü Ü
ä ä
ö ö
ü ü
ß ß
(Siehe https://www.davidkehr.com/sonderzeichen-und-umlaute-in-xml/ )
Vielleicht werden diesen leichter "ignoriert".
VG
Yal
AW: XML-Datei erstellen mit HTML-Umlaute
23.01.2023 12:53:18
Scooter_0807
Hallo Yal,
vielen dank für Deine Mühe.
ja, das habe ich schonmal versucht.
Die Herausforderung liegt in dem & in der Codierung.
Ein Ä muss ich durch Ä ersetzen.
Die Save-Operation ersetzt auch hier das & durch &
Als Ergebnis steht dann in der XML-Datei &amp#196;
Ich suche nach einem Tip, wie ich in der Save-Operation verhindern kann, dass diese Ersetzung stattfindet.
Ich weiß halt nicht ob ich die Save-Operation verändern kann oder ob bei der Erzeugung des Objektes schon eine Anpassung notwendig ist.
Grüße
Scooter
Anzeige
AW: XML-Datei erstellen mit HTML-Umlaute
23.01.2023 14:04:28
Yal
Hallo Scooter,
ich denke, Du hast bereits sämtliche Internetseite durchgeforstet. Es kann nur ein Glücksache, eine zu finden, die Du noch nicht hattest:
https://learn.microsoft.com/en-us/previous-versions/troubleshoot/msxml/xml-encoding-dom-interface-methods
darin https://learn.microsoft.com/en-us/previous-versions/aa468560(v=msdn.10)#creating-new-xml-documents-with-msxml
VG
Yal
Anzeige
AW: XML-Datei erstellen mit HTML-Umlaute
24.01.2023 09:30:45
Scooter_0807
Hallo Yal,
vielen Dank für Deine Mühe
Ja, die Umstellung der Codierung auf ISO-8859-1 habe ich schon getestet.
Damit kommen die Umlaute sauber in der Datei an, dass sie in Windows-Umgebungen gelesen werden können.
Für Linux-basierte Webserver muss allerdings die Schreibweise ä in der Datei sein und das geht mit dieser Einstellung leider nciht.
Grüße
Scooter_0807
AW: XML-Datei erstellen mit HTML-Umlaute
23.01.2023 14:50:37
peterk
Hallo Scooter
Ich fürchte da kannst Du an keiner Schraube drehen.
Alternative: XML mit Umlauten schreiben und danach ersetzen:

....
    xmlDoc.Save (strPath & "\portalNavIdmXml.xml")
    
    strXMLfile = strPath & "\portalNavIdmXml.xml"
    
    Set adodbStream = CreateObject("ADODB.Stream")
    With adodbStream
        .Type = 2
        .Charset = "utf-8"
        .Open
        .LoadFromFile strtXMLfile
        stext = .readtext
    End With
        
    stext = Replace(stext, "ä", "&ampauml;")
    
    With adodbStream
        .Position = 0
        .WriteText = stext
        .savetofile strXMLfile, 2
        .Close
    End With
.....
Peter
Anzeige
AW: XML-Datei erstellen mit HTML-Umlaute
24.01.2023 09:31:52
Scooter_0807
Hallo Peterk,
super, danke für Deinen Tip.
Die Lösung hat sofort gegriffen und ist jetzt umgesetzt.
Grüße
Scooter_0807

70 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige