Possible Duplicate:
rapidxml: how to iterate through nodes? Leaves out last sibling
我试图使用RapidXML从XML文件中获取一些信息,但无法使其正常工作。
XML文件如下所示:
<MODESMESSAGE>
<DATETIME>20070622141943</DATETIME>
<MODES>400F2B</MODES>
<CALLSIGN>BAW134</CALLSIGN>
<ALTITUDE>120300</ALTITUDE>
<GROUNDSPEED>451</GROUNDSPEED>
<TRACK>234</TRACK>
<VRATE>0</VRATE>
<AIRSPEED></AIRSPEED>
<LATITUDE>-14.1102</LATITUDE>
<LONGITUDE>-31.5789</LONGITUDE>
</MODESMESSAGE>
这就是我的代码的样子
#include <iostream>
#include <cstdlib>
#include "rapidxml.hpp"
#include <iostream>
#include <fstream>
#include <vector>
using namespace rapidxml;
using namespace std;
xml_document<> doc; // character type defaults to char
int main(){
ifstream myfile("test.xml");
xml_document<> doc;
vector<char> buffer((istreambuf_iterator<char>(myfile)), istreambuf_iterator<char>( ));
buffer.push_back('\0');
doc.parse<0>(&buffer[0]);
xml_node<> *node = doc.first_node();
xml_attribute<> *att = node->first_attribute();
cout << node->name();
cout << att->name();
}
我可以编译该程序,但是当我运行它时,它将停止工作。我可以获取第一个节点(MODEMESSAGE),但无法获取其余节点,即DATETIME或MODES。
我该怎么办?
最佳答案
“ DATETIME”和“ MODES”是“ MODEMESSAGE”的内部节点,因此您应该像这样访问它们:
xml_node<> *messagenode = doc.first_node("MODEMESSAGE");
xml_node<> *datetimenode = messagenode->first_node("DATETIME");
xml_node<> *modesnode = messagenode->first_node("MODES");
关于c++ - 如何从XML文件中读取信息C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13253544/