XML保存的问题 - VC/MFC / 网络编程
打开一个原有的XML文件<?xml version="1.0" encoding="UTF-8" standalone="no" ?>,文件使用UTF-8格式保存,用二进制方式打开文件头的标识为EF BB BF,但是保存后文件头的标识没有了,也就是文件不再是UTF-8格式的了,并且文件的大小变小了。有时候在文件的末尾会出现部分的重复,这样XML文件的格式就不正确了。
部分代码如下
MSXML2::IXMLDOMDocument2Ptr m_doc;
m_doc.CreateInstance( __uuidof(MSXML2::DOMDocument40)
m_doc->load(m_strSvgFileName.AllocSysString());
m_doc->save(m_strSvgFileName.AllocSysString());
用开源库 如 tinyxml
也可以试着拥有 CMarkup 类库 看看 比较快实现你要的
CMarkup类。。。
微软的COM组件不行吗
看来只能用开源库了
我有一种办法:
你不要使用save(filename)方法,
你先getxml,获取xml的内容,这个内容里面是没有你说的EF BB BF这三个字符的,你写文件的时候先写入这三个字符,然后createfile,writefile(eebbbf),writefile(xml内容),这样就可以了。
我一直都是这样处理的。包括读文件也是使用readfile(3,filesize-3)来获取xml内容,然后再使用msxml2来处理这个xml内容。
建议使用tinyxml,比较简单方便...MS的不清楚,反正能用open source的,我就尽量用open source的,出问题也能自己修复.
相关问答:
<?xml version="1.0"?>
<root>
<status>433</status>
<msg>这个是汉字</msg>
<serialno>123</serialno>
</root>
如何用ASP读取 status值 ......
<?xml version="1.0" encoding="utf-8" ?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical&q ......
Private Sub Command1_Click()
Dim MyString() As String
Open "a.xml" For Binary As #1 ' 打开刚创建的文件。
ReDim MyString(LOF(1) - 1)
Put #1, , MyRecord ' 读入所有字符到变量中 ......
下面是XML初始文件内容
XML code:
<upd:Update xmlns:lar="http://schemas.microsoft.com/msus/2002/12/LogicalApplicabilityRules" xmlns:cmd="http://schemas.microsoft.com/msus/2002/12/Up ......