Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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!
Anzeige

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
Anzeige
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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

XML-Datei erstellen mit HTML-Umlauten


Schritt-für-Schritt-Anleitung

Um eine XML-Datei mit Umlauten in Excel zu erstellen, kannst du folgenden VBA-Code verwenden. Dieser Code zeigt, wie du die DOMDocument-Klasse nutzen kannst, um eine XML-Datei zu generieren:

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")
xmlDoc.appendChild nodePI
xmlDoc.appendChild nodeRoot

Dim displayName As String
displayName = "Präsentkörbe" ' Beispiel für einen Umlaut

' Ersetzen von Umlauten in HTML-Code
displayName = Replace(displayName, "ä", "ä")
nodeLevel1 = xmlDoc.createElement("navItemLevel1")
nodeLevel1.setAttribute "displayName", displayName
nodeRoot.appendChild nodeLevel1

xmlDoc.Save ("C:\DeinPfad\DeineDatei.xml")

Achte darauf, den Pfad zu deiner gewünschten Datei anzupassen.


Häufige Fehler und Lösungen

Ein häufiges Problem ist, dass beim Speichern der XML-Datei die Umlaute nicht korrekt dargestellt werden. Wenn du beispielsweise den Umlaut "ä" durch ä ersetzen möchtest, kann es sein, dass Excel dies beim Speichern in ä umwandelt.

Lösung: Nutze die ADODB.Stream-Klasse, um die XML-Datei nach dem Speichern zu bearbeiten:

Dim adodbStream As Object
Set adodbStream = CreateObject("ADODB.Stream")
adodbStream.Type = 2 ' Text
adodbStream.Charset = "utf-8"
adodbStream.Open
adodbStream.LoadFromFile ("C:\DeinPfad\DeineDatei.xml")
Dim stext As String
stext = adodbStream.ReadText

' Ersetzen von HTML-Umlauten
stext = Replace(stext, "ä", "ä")

adodbStream.Position = 0
adodbStream.WriteText stext
adodbStream.SaveToFile ("C:\DeinPfad\DeineDatei.xml"), 2
adodbStream.Close

Alternative Methoden

Eine weitere Möglichkeit, Umlaute in XML-Dateien zu konvertieren, besteht darin, die Zeichen direkt in HTML-Codes umzuwandeln. Du kannst auch die Funktion HtmlEncode verwenden, um sicherzustellen, dass alle Sonderzeichen korrekt verarbeitet werden.


Praktische Beispiele

Angenommen, du möchtest eine Liste von Produkten in einer XML-Datei speichern. Hier ein Beispiel, wie du die Produkte mit Umlauten und HTML-Codes in XML darstellen kannst:

Dim productName As String
productName = "Käse"

productName = Replace(productName, "ä", "ä")

nodeLevel1.setAttribute "productName", productName

Wenn du den Code ausführst, wird das Attribut productName korrekt als productName="Käse" in die XML-Datei geschrieben.


Tipps für Profis

  1. Verwende UTF-8: Stelle sicher, dass du die Datei im UTF-8-Format speicherst, um die Kompatibilität mit verschiedenen Systemen zu verbessern.
  2. HTML-Codes vorbereiten: Bereite eine Funktion vor, die alle Umlaute und Sonderzeichen automatisch in HTML-Codes umwandelt, um Fehler zu vermeiden.
  3. Teste deinen Code: Führe Tests in unterschiedlichen Umgebungen (Windows, Linux) durch, um sicherzustellen, dass die XML-Datei überall korrekt interpretiert wird.

FAQ: Häufige Fragen

1. Wie kann ich Umlaute in XML-Dateien umwandeln? Du kannst die Replace-Funktion in VBA verwenden, um Umlaute in ihre entsprechenden HTML-Codes zu konvertieren.

2. Warum werden Umlaute beim Speichern in Excel nicht korrekt angezeigt? Das Problem könnte an der Codierung liegen. Stelle sicher, dass du die Datei im UTF-8-Format speicherst und eventuell die ADODB.Stream-Klasse zur Nachbearbeitung verwendest.

3. Gibt es eine Möglichkeit, HTML-Umlauts automatisch zu konvertieren? Ja, du kannst eine Funktion erstellen, die alle benötigten Zeichen in HTML-Codes umwandelt, bevor du sie in die XML-Datei schreibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige