C++使用STD解析XML

dif*_*ent 3 c++ xml string parsing std

我知道有几个XML libaries在那里,但不幸的是,我无法用它们来我工作的学校项目.

我有一个创建此XML文件的程序.

<theKey>
<theValue>23432</theValue>
</theKey>
Run Code Online (Sandbox Code Playgroud)

我想要做的是解析标签之间的"23432".但是,文件中有随机标记,因此可能并不总是位于顶部的第二行.另外,我不知道标签之间的数字是多少位数.

这是我到目前为止开发的代码.它是基本的,因为我不知道我可以使用哪些是将解析值的C++语言的一部分.我在使用JAVA时的暗示是使用"字符串"库中的某些东西,但到目前为止,我对我可以使用的东西很缺乏.

任何人都可以给我指导或线索我可以做什么/使用什么?非常感谢.

这是我到目前为止开发的代码:

#include <iostream>
#include <fstream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::fstream;
using std::string;
using std::ifstream;


int main()
{
 ifstream inFile;
 inFile.open("theXML.xml");

 if (!inFile)
 {
 }

 string x;
 while (inFile >> x)
 {
  cout << x << endl;
 }

 inFile.close();

 system ( "PAUSE" );


 return 0;
}
Run Code Online (Sandbox Code Playgroud)

bob*_*nce 6

要解析任意XML,您确实需要一个合适的XML解析器.当你包含语言的所有字符模型角落和DTD相关的缝隙时,解析起来并不简单,编写一个只能理解XML的任意子集的解析器是一个可怕的错误.

在现实世界中,使用除了适当的XML解析器库之外的任何东西来实现它是错误的.如果您不能使用库而您无法将程序的输出格式更改为更容易解析的内容(例如,换行分隔的键/值对),那么您将处于难以为继的位置.任何要求您在没有XML解析器的情况下解析XML的学校项目都是完全错误的.

(好吧,除非项目的重点是用C++编写XML解析器.但这将是一个非常残酷的任务.)