我有一个很烦人的问题,我想解决很多小时。
我使用带有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/