Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   XML: Text mit Umlaut in Node schreiben (https://www.delphipraxis.net/211175-xml-text-mit-umlaut-node-schreiben.html)

Redeemer 8. Aug 2022 17:27

AW: XML: Text mit Umlaut in Node schreiben
 
Zitat:

Zitat von Rolf Frei (Beitrag 1509895)
Im XML muüssen nur die Standardzeichen des XML-Formats umgewandelt werden. (& < > / = ", etc.) Beispiel: "Müller&Meier" -> "Müller&amp;Meier"

Gleich und Schrägstrich nicht. Manchmal noch Apostroph. Ob man das und Anführungszeichen auch in CDATA oder vom jeweils anderen umschlossenen Attributswerten escapen muss, ist auch uneinheitlich.

Uwe Raabe 8. Aug 2022 19:38

AW: XML: Text mit Umlaut in Node schreiben
 
Zitat:

Zitat von Rolf Frei (Beitrag 1509895)
Das #248 ist eh falsch, da das der Ansi Code des "ö" ist, also nicht UTF-8.

Das stimmt so nicht. Die &-Codierung ist unabhängig von dem angegebenen Encoding. Das wird nur für die Interpretation der einzelnen Bytes als Zeichen verwendet. So wird in UTF-8 das "ö" durch die zwei Bytes c3 b6 dargestellt wird. Im Gegensatz dazu ist die &-Codierung unabhängig vom Encoding. Das "ö" kann also in allen Encodings als "&+#246;" (das + bitte wegdenken) angegeben werden. Nötig ist es allerdings nur bei Encodings die es nicht selbst unterstützen. Folglich kann bei UTF-8 auch direkt das "ö" verwendet werden.

Wäre der Code #246 falsch, hätten wir nicht dieses Ergebnis bekommen:
Zitat:

Zitat von taveuni (Beitrag 1509888)
Oje. Und was stimmt nun? Beides?

Weil wenn ich das mache:

Delphi-Quellcode:

var
  XMLDoc: IXMLDocument;
  Node: IXMLNode;
  s: String;
begin
  XmlDoc:= TXmlDocument.Create(Nil);
  XmlDoc.LoadFromFile('c:xml1.xml');
//  XmlDoc.LoadFromFile('c:xml2.xml');
  Node:= XmlDoc.DocumentElement.ChildNodes.FindNode('message');
  if Assigned(Node) then
    s:= Node.NodeValue;
Ist bei beiden Varianten s "'Dies ist ein Umlaut: ö.'"

Die Verwirrung kehrt zurück....

xml1.xml:
Code:
<?xml version="1.0" encoding="utf-8"?>
<lpr:error xmlns:lpr="http://127.0.0.1/lpr">
<message>Dies ist ein Umlaut: ö.
</message>
</lpr:error>'
xml2.xml:
Code:
<?xml version="1.0" encoding="utf-8"?>
<lpr:error xmlns:lpr="http://127.0.0.1/lpr">
<message>Dies ist ein Umlaut: & #246;.
</message>
</lpr:error>'
(ohne Leerzeichen nach dem &)


taveuni 9. Aug 2022 06:15

AW: XML: Text mit Umlaut in Node schreiben
 
Danke Euch allen. Ich hoffe die Gegenstelle kommt damit auch klar. Ich muss das XML schlussendlich via Rest Response zurückgeben.

himitsu 9. Aug 2022 11:29

AW: XML: Text mit Umlaut in Node schreiben
 
&ouml; wäre sowieso falsch, da XML dieses "HTML"-Entity nicht kennt.

&#246; wäre richtig, aber wie schon erwähnt, ist es ja dank UTF-8 nicht nötig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz