私は文字列リストを使用して単純なxmlを作成し、Addを介してノードを挿入してUTF8でエンコードされたxmlを作成していました
例えば。
myXML.Add('<myNode>'+UTF8Encode('υτφ8στρινγ')+'</myNode>');
ただし、よりクリーンなコードと汎用性を備えた IXMLDocument フォームに切り替えたいと考えていました
Delphiで単純なxmlを作成しています
procedure myxml;
var
xmlDoc : IXMLDocument;
xNode : IXMLNode;
begin
xmlDoc := TXMLDocument.Create(nil);
try
xmlDoc.Active := TRUE;
xmlDoc.Version := '1.0';
xmlDoc.Encoding := 'utf-8';
xNode := xmlDoc.AddChild('myNode');
xNode.Text := UTF8Encode('υτφ8στρινγ'); //greek chars
xmlDoc.XML.SaveToFile('test.xml');
finally
FreeAndNil(xmlDoc);
end;
end;
問題は、出力 XML が UTF-8 で 2 回エンコードされていることです。問題は、デフォルトで(MSXML.save()を介して)UTF-8でエンコードするMSXMLに関係していると思います。
だから私が必要としているのは、どういうわけかMSXMLにXMLをエンコードさせずにヘッダーを持たせることです
<?xml version="1.0" encoding="utf-8"?>