Hi,
ich habe eine kurze Frage bezüglich Sonderzeichen und dem IXMLDocument.
Delphi-Quellcode:
procedure xmlTest();
var
xml: IXMLDocument;
rootNode, childNode: IXMLNode;
logNode: IXMLNode;
logMessage:
string;
logWideString: Widestring;
begin
logMessage := '
Test äöüß<>"&';
// write xml data
xml := NewXMLDocument();
xml.Encoding := '
iso-8859-1';
xml.Options := [doNodeAutoIndent];
rootNode :=
xml.AddChild('
result');
logNode := rootNode.AddChild('
logData');
logNode.AddChild('
message').Text := logMessage;
logWideString :=
xml.XML.Text;
ShowMessage(logWideString);
// read xml data
xml := LoadXMLData(logWideString);
rootNode :=
xml.DocumentElement;
childNode := rootNode.ChildNodes[0];
logWideString := childNode.childNodes['
message'].Text;
logMessage := logWideString;
ShowMessage(logMessage);
end;
Das zwischenwandeln auf WideString ist lediglich enthalten da es der späteren Einsatzumgebung entspricht (
xml wird vom Hauptprogramm erzeugt und als WideString an eine
dll übergeben)
Das Erste ShowMessage gibt die Sonderzeichen alle in der korrekten
XML Notation aus (< > ...)
Das zweite ShowMessage hingegen verschluckt das "&" Zeichen die anderen Sonderzeichen werden korrekt angezeigt. Woran liegt das ? Die Wandlung der unerlaubten Sonderzeichen in erlaubte
XML Notation funktioniert ja scheinbar.