C++代码库tinyxml2使用技巧

  • Post author:
  • Post category:其他




1 常规使用

const char* declaration = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
tinyxml2::XMLDocument doc; //创建一个tinyxml2库的XMLDocument对象,表示一个完整的XML文档
doc.Parse(declaration); //将XML声明解析为XMLDocument对象的一部分

const char* chroot = "OpenDRIVE";
tinyxml2::XMLElement* root = doc.NewElement(chroot); //创建一个tinyxml2库的XMLElement指针对象 
doc.InsertEndChild(root);

doc.SaveFile("output_opendrive.xodr"); //保存XML文档

示例1,对于XMLDocument对象,使用到的方法有

ToDocument()



NewElement()



NewText()

;对于XMLElement对象,使用到的方法有

SetAttribute()



InsertFirstChild()



InsertEndChild()

;对于XMLText对象,使用到的方法有

SetCData()

tinyxml2::XMLDocument doc;
tinyxml2::XMLDocument* _p_doc = doc.ToDocument(); //ToDocument()函数返回一个指针,它指向XMLDocument对象 

tinyxml2::XMLElement* header = _p_doc->NewElement("header");
header->SetAttribute("reMajor", "1");
header->SetAttribute("revMinor", "4");
header->SetAttribute("name", "sample");
header->SetAttribute("version", "1.00");
...
tinyxml2::XMLElement* georef = _p_doc->NewElement("geoReference");
tinyxml2::XMLText* geotext = _p_doc->NewText("+proj=tmerc...+no_defs");
geotext->SetCData(true);
georef->InsertFirstChild(geotext); 
header->InsertEndChild(georef); 
root->InsertEndChild(header); 

生成如下xml内容,

<header revMajor="1" revMinor="4" name="sample" version="1.00" date="2023-07-17T21:53:12" north="-3.07576662199571729e+01" south="3.21219889912754297e+01" east="1.55376248724678589e+01" west="-1.44333776089006278e+01" vendor="Baidu">
    <geoReference><![CDATA[+proj=tmerc +ellps=WGS84 +lon_0=117 +lat_0=0 +x_0=-23022 +y_0=-4303190 +k=0.9996 +datum=WGS84 +units=m +no_defs]]></geoReference>
</header>

示例2,



版权声明:本文为YMWM_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。