gpt4 book ai didi

xml - 为什么 "encoding"方法得到的字符串中没有 "IXMLDocument.SaveToXML"属性?

转载 作者:行者123 更新时间:2023-12-03 19:46:30 25 4
gpt4 key购买 nike

我用 NewXMLDocument()生成我的数据的 XML 文档。

有一个SaveToXML()方法将文档保存到 XML 格式的字符串变量。

问题是 XML 字符串不包含 "encoding"头标签中的属性。

但是,如果我们将 XML 文档保存到带有 SaveToFile() 的文件中方法,"encoding"属性将存在于其中。

这是我的代码:

var
XML: IXMLDocument;
RootNode, CurNode: IXMLNode;
XmlString: string;
begin
XML := NewXMLDocument;
XML.Encoding := 'utf-8';
XML.Options := [doNodeAutoIndent];
RootNode := XML.AddChild('XML');
CurNode := RootNode.AddChild('List');
CurNode := CertList.AddChild('Item');
CurNode.Text := 'bla-bla-bla';
...

XMl.SaveToXML(XmlString); // <<--- no "encoding" attribute here

XMl.SaveToFile('my-list.xml');
XMl := nil;
end;

有没有办法制作 SaveToXML()方法添加 "encoding"属性?

最佳答案

需要使用重载方法IXMLDocument.SaveToXML(var XML: UTF8String) .
这会将 xml 编码为 UTF-8 并在 xml header 中添加编码属性。
声明您的XmlStringUTF8String得到想要的结果。

当您声明 XmlStringstring就像您所做的那样,在 Delphi 2009+ 中是 UTF-16 (Unicode),您实际上调用了 SaveToXML(var XML: DOMString) . DOMString定义为 UnicodeString .
默认情况下,声明为类型 string 的变量是 UnicodeString .输出 xml 为 UTF-16,省略 encoding 属性。

关于xml - 为什么 "encoding"方法得到的字符串中没有 "IXMLDocument.SaveToXML"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com