我有一个很烦人的问题,我想解决很多小时。
我使用带有C++的RapidXML来解析XML文件:

xml_document<> xmlin;
stringstream input; //initialized somewhere else
xmlin.clear();
xmlin.parse<0>(&(input.str()[0]));

cout << "input:" << input.str() << endl << endl;

xml_node<char> *firstnode = xmlin.first_node();
string s_type = firstnode->first_attribute("type")->value();
cout << "type: " << s_type << endl;

但是我在标准输出上得到了这个:
input:<?xml version="1.0" encoding="utf-8"?><testxml command="testfunction" type="exclusive" />

type: exclusive" />

这可能是什么原因(打印s_type变量)?
这很烦人,因为我无法很好地处理xml。

最佳答案

其实我找到了解决方案。

Stringstream不喜欢何时修改其内容(rapidXML进行快速的原位解析,这意味着它修改了获取的数组的内容)。

但是在文档中我读到了字符串类也不喜欢它。

从string::c_str文档页面:



但是,当我从流中创建字符串时,它按预期工作:

xml_document<> xmlin;
stringstream input; //initialized somewhere else
string buffer = input.str()

xmlin.clear();
xmlin.parse<0>(&(buffer[0]));

关于c++ - RapidXML奇怪的解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11768514/

10-13 08:05