使用开源的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类型。