C++ 使用 STD 解析 XML

标签 c++ xml string parsing std

我知道那里有几个 XML 库,但不幸的是,我无法将它们用于我正在进行的学校项目。

我有一个程序可以创建这个 XML 文件。

<theKey>
<theValue>23432</theValue>
</theKey>

我想做的是解析标签之间的“23432”。但是,文件中有随机标签,因此可能并不总是在从顶部算起的第二行。另外,我不知道标签之间的数字是多少位。

这是我到目前为止开发的代码。这是基本的,因为我不知道我可以使用什么是 C++ 语言的一部分来解析值。我使用 JAVA 时的提示是使用“String”库中的一些东西,但到目前为止我还没有找到可以使用的东西。

任何人都可以给我方向或线索,告诉我我可以做什么/使用什么吗?非常感谢。

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

#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;
}

最佳答案

要解析任意 XML,您确实需要一个合适的 XML 解析器。当您包括该语言的所有字符模型角落和与 DTD 相关的缝隙时,解析起来一点都不简单,并且编写一个只理解任意子集的解析器是一个可怕的失礼的 XML。

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

(好吧,除非项目的全部目的是用 C++ 编写 XML 解析器。但那将是一项非常残酷的任务。)

关于C++ 使用 STD 解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225530/

相关文章:

C++ boost 如何获取枚举中的多个成员?

c++ - C++生成一定范围内均匀分布的随机数

.net - 在 .NET 中构建 XML 文档的最佳方法是什么?

java - 无法将 StringTokenizer 传递给多个方法

c++ - 字符数组文字在何处以及如何创建?

string - 使用PowerShell查找字符串中的差异

c++ - 跨编译单元的单例 : linking library vs linking objects

c++ - 错误 C2440 : 'initializing' : cannot convert from 'classname *' to 'classname'

xml - 使用 Mirth Connect 将 XML 转换为 HL7 消息

regex - 如何获取包含特定短语的 XML 文件的数量?