我正在尝试在我的C ++程序中读取XML文件。 XML文件看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<myprogram>
<configuration>
<window>
<height> 300 </height>
<width> 500 </width>
</window>
</configuration>
</myprogram>
现在我可以查看XML文件并试着像这样阅读:
ifstream in("mydata.xml");
//ignore the <?xml line
in.ignore(200, '\n');
//i know that the first value i want is the window height so i can ignore <myprogram> <configuration> and <window>
//ignore <myprogram>
in.ignore(200, '\n');
//ignore <configuration>
in.ignore(200, '\n');
//ignore <window>
in.ignore(200, '\n');
string s; int height;
//okay, now i have my height
in >> s >> height;
一般来说,这似乎是一个坏主意,它确实限制了XML文件的修改方式。上面的解决方案是非常手动的,如果XML中的任何内容发生变化,似乎必须更改整个读取方法。
有更好的方法吗?
答案 0 :(得分:5)
您可以使用一些可以为您完成此操作的库。如果您使用的是Windows平台,则可以使用MSXML,它已经是系统的一部分。
请检查此问题:Read Write XML File In C++
答案 1 :(得分:3)
您需要一个XML Parser。那里有一堆:
我个人最喜欢的是pugiXML,但这是个人偏好的问题。
答案 2 :(得分:1)
您可以使用具有解析XML功能的POCO库
答案 3 :(得分:1)
boost属性树适用于xml,我会用它。
答案 4 :(得分:1)
在多平台源代码中,我通常使用Qt XML阅读器。
您有3种阅读方式:
如果您只编写Windows软件,则应使用MSXML 6.由于Windows XP SP3 MSXML 6.0是操作系统的一部分。
在Linux上,您应该使用libxml2。