0.8.0 使用了POCO::XML,还在构建中,这几天一直在增加功能,还不是很好用,尤其是例子的很少。要从ofxXmlSettings转过来还真有点困难。
下面是关于 POCO::XML 使用的一个例子,虽然不是of,但是对于 POCO::XML ,path的使用还是有很大的帮助。
下面是关于 POCO::XML 使用的一个例子,虽然不是of,但是对于 POCO::XML ,path的使用还是有很大的帮助。
原始xml:
<config>
<prop1>1.23</prop1>
<prop2>2.34</prop2>
<prop3>
<prop4 attr="1"/>
<prop4 attr="2"/>
</prop3>
<prop5 id="first">Hello,</prop5>
<prop5 id="second"> world!</prop5>
</config>
代码:
#include <span ><Poco/Util/AbstractConfiguration.h>
</span>#include <span ><Poco/Util/XMLConfiguration.h>
</span>#include <span ><iostream>
</span>
using namespace Poco::Util;
using namespace std;
int main()
{
AbstractConfiguration *cfg = new XMLConfiguration("conf.xml");
double prop1 = cfg->getDouble("prop1");
double prop2 = cfg->getDouble("prop2");
cout << "prop1 + prop2 = " << prop1 + prop2 << endl;
cout << "This is an empty string: "
<< cfg->getString("prop3.prop4") << endl;
int prop4 = cfg->getInt("prop3.prop4[@attr]");
int prop4_0 = cfg->getInt("prop3.prop4[0][@attr]");
int prop4_1 = cfg->getInt("prop3.prop4[1][@attr]");
cout << "prop4 + prop4_0 + prop4_1 = "
<< prop4 + prop4_0 + prop4_1 << endl;
cout << cfg->getString("prop5[0]")
<< cfg->getString("prop5[1]") << endl;
cout << cfg->getString("prop5[@id=first]")
<< cfg->getString("prop5[@id='second'") << endl;
// No need to delete cfg, since it is reference counted for garbage collection
return 0;
}
输出结果:
$ g++ -o xml_conf xml_conf.cc -lPocoUtil
$ ./xml_conf
prop1 + prop2 = 3.57
This is an empty string:
prop4 + prop4_0 + prop4_1 = 4
Hello, world!
Hello, world!