xml文件读写

使用开源的markup实现。(实在不喜欢被opencv绑架)

在使用markup保存xml文件时遇到一些问题。

xml.Save(filename.c_str());

vs属性中的Char set 从Use Unicode Character Set时这里的filename需要是wstring类型。如果是string会报错 no suitable convertion from const char* to MCD_CSTR,但是当filename为string时,将vs属性中的Char set 从Use Unicode Character Set改为Use Multi-Byte Character Set时又不会报错了。

解决办法:Use Unicode Character Set时使用wstring类型的参数filename;

       Use Multi-Byte Character Set时使用string类型的参数filename;

下面列举一个写文件的例子。

 1 int main(int argc, char** argv)
 2 {
 3     CMarkup xml;
 4     xml.SetDoc(L"<?xml version="1.0" encoding="UTF-8"?>
");
 5     xml.AddElem(L"root");
 6     xml.AddChildElem(L"sub_short_forcast");
 7     xml.IntoElem();
 8     xml.AddChildElem(L"tag");
 9     xml.IntoElem();
10     xml.SetAttrib(L"name", L"张飞");
11     xml.SetAttrib(L"age", L"40");
12     xml.OutOfElem();
13     xml.SetAttrib(L"story", L"《三国演义》");
14     xml.AddElem(L"author");
15     xml.SetAttrib(L"name", L"罗贯中");
16     xml.Save(L"./a.xml");
17     return 0;
18 }

生成结果:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <sub_short_forcast story="《三国演义》">
        <tag name="张飞" age="40"/>
    </sub_short_forcast>
    <author name="罗贯中"/>
</root>

因为markup操作使用wstring还是strinig跟使用的字符集有关,所以需要自己对应相应字符集选用不同的字符类型。

如果读写数组,参考下面两篇博客:

参考这篇是要说明保存数组时按wstring保存

https://blog.csdn.net/birdw111/article/details/17900433?t=1474651705079

参考这篇是要说明,读回数组时要wstring转回int/float/double类型。

https://www.cnblogs.com/johngu/p/7878029.html

 https://blog.csdn.net/mars_xiaolei/article/details/80855587

原文地址:https://www.cnblogs.com/juluwangshier/p/13094271.html