我正在从文件中读取以下XML文本:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SampleXML>...</SampleXML>
我使用IXMLDomDocument :: loadXML加载UTF-8文本。然后我操纵XML并调用IXMLDomDocument :: Getxml()来获取修改后的XML的_bstr_t。这个_bstr_t如下所示:
<?xml version="1.0" standalone="yes"?>
<ModifiedSampleXML>...</ModifiedSampleXML>
标题中的encoding =“UTF-8”属性消失了。但是,如果我调用IXMLDomDocument :: save(FileName)将XML保存到文件,当我打开文件时,我看到encoding =“UTF-8”属性被保留。
为什么在调用Getxml()时,encoding =“UTF-8”属性不存在?如何告诉MSXML始终保留此属性? (不仅在保存时)
答案 0 :(得分:1)
属性&#34; encoding =&#39; UTF-8&#39;&#34;被删除,因为Getxml()
以宽字符(16位)字符串返回加载的XML。
您可以通过查看返回的_bstr_t
所拥有的内存来验证这一点。
MSXML保留表示编码为8位的属性是不正确的,实际上它是16位。
但是,如果您加载了一个unicode xml文件,其中包含&#34; encoding =&#39; UTF-16&#39;&#34;属性,您会看到Getxml()
不会删除该属性。