C++:
处理XML
如何操作:
以下是使用TinyXML-2库解析XML的简单方法:
#include <tinyxml2.h>
#include <iostream>
int main() {
tinyxml2::XMLDocument doc;
doc.Parse("<root><message>Hello, World!</message></root>");
const char* content = doc.FirstChildElement("root")->FirstChildElement("message")->GetText();
std::cout << content << std::endl;
return 0;
}
示例输出:
Hello, World!
这是如何创建一个XML文件的方法:
#include <tinyxml2.h>
#include <iostream>
int main() {
tinyxml2::XMLDocument doc;
auto* declaration = doc.NewDeclaration();
doc.InsertFirstChild(declaration);
auto* root = doc.NewElement("root");
doc.InsertEndChild(root);
auto* message = doc.NewElement("message");
message->SetText("Hello, World!");
root->InsertEndChild(message);
doc.SaveFile("output.xml");
return 0;
}
这将生成一个内容为:
<?xml version="1.0"?>
<root>
<message>Hello, World!</message>
</root>
的XML文件output.xml
。
深入探索
自90年代末以来,XML在Web服务和数据存储中一直发挥着关键作用。尽管现在JSON和YAML对于配置和交互操作更为常见,XML在许多企业系统中仍然占据重要位置。在C++中解析XML可能会感觉到旧学校风格,这涉及手动DOM/SAX解析。幸运的是,像TinyXML-2这样的库简化了这个过程。C++没有内置的XML支持;像TinyXML-2、pugixml或Xerces这样的库简化了困难部分。
另请参阅
- TinyXML-2文档:https://leethomason.github.io/tinyxml2/
- pugixml库:https://pugixml.org/
- Xerces-C++解析器:https://xerces.apache.org/xerces-c/
- W3C XML规范:https://www.w3.org/XML/