当前位置: 首页 > news >正文

郑州市住建局官网seo优化咨询

郑州市住建局官网,seo优化咨询,获取网站缩略图的asp代码,企业网站服务器托管😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍tinyxml2解析库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍tinyxml2解析库配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明
      • 一个解析示例:
      • xml地图解析

😏1. 项目介绍

项目Github地址:https://github.com/leethomason/tinyxml2

TinyXML-2是一个轻量级的C++库,用于解析和生成XML文档。它是对原始TinyXML库的改进和扩展,提供了更快速、更强大的XML处理功能。

以下是一些TinyXML-2的主要特点和功能:

1.简单易用:TinyXML-2提供了简单的API,使得解析和生成XML文档变得简单和直观。它使用类似于DOM(文档对象模型)的方法来操作XML元素,让开发者可以轻松地读取和写入XML数据。

2.轻巧高效:TinyXML-2具有非常小的内存占用和高性能。它专注于简单的XML操作,没有复杂的依赖关系,因此可以快速加载和处理大型XML文件。

3.支持解析和生成:TinyXML-2支持从字符串或文件中解析XML文档,并且可以生成格式良好的XML文本。它能够处理各种节点类型,如元素、属性、文本、注释等。

4.错误处理:TinyXML-2提供了灵活的错误处理机制。当解析XML时,它可以检测到语法错误、结构错误或其他问题,并提供相关的错误信息和异常处理机制。

5.跨平台:TinyXML-2可以在多个操作系统上使用,包括Windows、Linux和Mac OS等。

😊2. 环境配置

下面进行环境配置:

sudo apt-get install build-essential
git clone https://github.com/leethomason/tinyxml2.git
cd tinyxml2
make
sudo make install
# 查看版本
pkg-config --modversion tinyxml2

g++编译:g++ -o main main.cpp -ltinyxml2

😆3. 使用说明

下面进行使用分析:

一个解析示例:

#include <iostream>
#include <tinyxml2.h>int main() {// 创建一个XML文档对象tinyxml2::XMLDocument doc;// 加载XML文件if (doc.LoadFile("example.xml") == tinyxml2::XML_SUCCESS) {// 打印根元素名称tinyxml2::XMLElement* root = doc.FirstChildElement("Root");if (root) {std::cout << "Root Element: " << root->Name() << std::endl;}// 遍历并打印所有子元素tinyxml2::XMLElement* element = root->FirstChildElement();while (element) {std::cout << "Element Name: " << element->Name() << std::endl;// 获取元素的属性值const char* attributeValue = element->Attribute("attribute");if (attributeValue) {std::cout << "Attribute Value: " << attributeValue << std::endl;}// 获取元素的文本内容const char* textValue = element->GetText();if (textValue) {std::cout << "Text Value: " << textValue << std::endl;}element = element->NextSiblingElement();}}// 创建一个新的XML文档tinyxml2::XMLDocument newDoc;// 创建根元素tinyxml2::XMLElement* newRoot = newDoc.NewElement("NewRoot");newDoc.InsertFirstChild(newRoot);// 创建子元素tinyxml2::XMLElement* newElement = newDoc.NewElement("NewElement");newRoot->InsertEndChild(newElement);// 设置属性值newElement->SetAttribute("attribute", "value");// 设置文本内容newElement->SetText("Hello, World!");// 保存XML文件newDoc.SaveFile("new_example.xml");return 0;
}

xml地图解析

项目github地址(推荐学习):https://github.com/chenyongzhe/HdmapEngine

这个地图解析引擎项目用tinyxml2库解析apollo opendrive xml格式的高精地图,包含道路、车道连接关系、信号灯等元素,以及车道搜索、wgs84转东北天等工具,最后可用python matplotlib将处理完的地图show出来。

下面是一些解析示例:

// 读取xml文件,去判断Node
bool HdmapEngine::paserApolloxml(const char *file_name)
{tinyxml2::XMLDocument doc;if (doc.LoadFile(file_name) != XML_SUCCESS)return false;XMLElement *root = doc.RootElement();XMLElement *roadNode = root->FirstChildElement("road"); // find road nodewhile (roadNode != NULL){string name = roadNode->Attribute("name"); // road name// if name include string("Road") or string("junction")if (name.substr(0, 4) == "Road"){// cout << roadNode->Attribute("id") << endl;paserRoad(roadNode);}else if (name.substr(0, 8) == "junction"){paserJunction(roadNode);}roadNode = roadNode->NextSiblingElement();}// 创建搜索树vector<Point> centerLintePoints;for (int i = 0; i < laneList.size(); i++){// if(laneList[i].centerLinePoints!=NULL)for (int j = 0; j < laneList[i]->centerLinePoints.size(); j++){centerLintePoints.push_back(*(laneList[i]->centerLinePoints[j]));}}// cout<<"centerpoint size "<<centerLintePoints.size()<<endl;tree->read_in(centerLintePoints);// cout<<"centerpoint size "<<centerLintePoints.size()<<endl;// cout<<"创建搜索树成功"<<endl;// printRoad();return true;
}
// 解析road元素
bool HdmapEngine::paserRoad(XMLElement *roadNode)
{string predecessor_elementType;int predecessor_id = INT_MAX;int successor_id = INT_MAX;string successor_elementType;double road_length;road_id = atoi(roadNode->Attribute("id"));XMLElement *linkNode = roadNode->FirstChildElement("link");XMLElement *lanes = roadNode->FirstChildElement("lanes");XMLElement *laneSection = lanes->FirstChildElement("laneSection");XMLElement *sucNode = linkNode->FirstChildElement("successor");if (sucNode != NULL){// cout << sucNode->Attribute("elementType") << " " << sucNode->Attribute("elementId") << endl;successor_elementType = sucNode->Attribute("elementType");successor_id = atoi(sucNode->Attribute("elementId"));}XMLElement *preNode = linkNode->FirstChildElement("predecessor");if (preNode != NULL){// cout << preNode->Attribute("elementType") << " " << preNode->Attribute("elementId") << endl;predecessor_elementType = preNode->Attribute("elementType");predecessor_id = atoi(preNode->Attribute("elementId"));}Road *road = new Road(road_id, predecessor_elementType, predecessor_id, successor_elementType, successor_id);int jun = atoi(roadNode->Attribute("junction"));if (jun == -1){// 非路口道路road->isJunctionRoad = false;}else{// 路口道路road->isJunctionRoad = true;}laneSection_id = 0;// lanesectionwhile (laneSection != NULL){paserLaneSection(laneSection, road);laneSection_id++;laneSection = laneSection->NextSiblingElement("laneSection");}// 解析stoplinepaserStopLineCrosswalk(roadNode, road);road->length = road->getRoadLength();roadList.push_back(road);roadMap[road->road_id] = road;return true;
}

gps转xyz工具部分:

bool TransformUtil::gps2xyz(const double &longitude, const double &latitude, const double &altitude,Eigen::Vector3d &xyz)
{// gps << gps_msg.longitude, gps_msg.latitude, gps_msg.altitude;Eigen::Vector3d gps(longitude, latitude, altitude);Eigen::Vector3d gps_ECEF = WGS84toECEF(gps);// 处理GPS数据double rad_lon = gps_origin_[1] / 180 * M_PI;double rad_lat = gps_origin_[0] / 180 * M_PI;double sin_lon = sin(rad_lon);double cos_lon = cos(rad_lon);double sin_lat = sin(rad_lat);double cos_lat = cos(rad_lat);Eigen::Matrix3d rot = Eigen::Matrix3d::Zero();// clang-format offrot << -sin_lon, cos_lon, 0,-sin_lat * cos_lon, -sin_lat * sin_lon, cos_lat,cos_lat * cos_lon, cos_lat * sin_lon, sin_lat;// clang-format onEigen::Vector3d diff_ECEF = gps_ECEF - origin_ECEF_;Eigen::Vector3d xyz_ECEF = rot * diff_ECEF;xyz << xyz_ECEF[0], xyz_ECEF[1], xyz_ECEF[2];return true;
}

在这里插入图片描述

以上。


文章转载自:
http://dinncotumefacient.wbqt.cn
http://dinncobenzoline.wbqt.cn
http://dinncokeratosis.wbqt.cn
http://dinncosnowcap.wbqt.cn
http://dinncopowdered.wbqt.cn
http://dinncomicrobody.wbqt.cn
http://dinncohomonymy.wbqt.cn
http://dinncomira.wbqt.cn
http://dinncoaconitum.wbqt.cn
http://dinncofuel.wbqt.cn
http://dinncoradiochemistry.wbqt.cn
http://dinncocamisa.wbqt.cn
http://dinncoxxi.wbqt.cn
http://dinncopollinctor.wbqt.cn
http://dinncoacoustically.wbqt.cn
http://dinncopinnate.wbqt.cn
http://dinncocaliche.wbqt.cn
http://dinncocrewel.wbqt.cn
http://dinnconautilite.wbqt.cn
http://dinncoobscure.wbqt.cn
http://dinncohowlet.wbqt.cn
http://dinncoeyeglass.wbqt.cn
http://dinncoinblowing.wbqt.cn
http://dinncoexosphere.wbqt.cn
http://dinncoeustacy.wbqt.cn
http://dinncofroebelian.wbqt.cn
http://dinncooxtail.wbqt.cn
http://dinncoprintmaker.wbqt.cn
http://dinncounacknowledged.wbqt.cn
http://dinncohorseleech.wbqt.cn
http://dinncosubtly.wbqt.cn
http://dinncocotyle.wbqt.cn
http://dinncowatchful.wbqt.cn
http://dinncomotivate.wbqt.cn
http://dinncosupraliminal.wbqt.cn
http://dinncokilchu.wbqt.cn
http://dinncobnfl.wbqt.cn
http://dinncokishinev.wbqt.cn
http://dinncobronzesmith.wbqt.cn
http://dinncounpronounceable.wbqt.cn
http://dinncopuzzleheaded.wbqt.cn
http://dinncoflintiness.wbqt.cn
http://dinncofundraising.wbqt.cn
http://dinncohlbb.wbqt.cn
http://dinncoproviso.wbqt.cn
http://dinncogentilesse.wbqt.cn
http://dinncounexpended.wbqt.cn
http://dinncocopywriter.wbqt.cn
http://dinncoanalyser.wbqt.cn
http://dinncosparmate.wbqt.cn
http://dinncojudicial.wbqt.cn
http://dinncochorally.wbqt.cn
http://dinncostormproof.wbqt.cn
http://dinncogranulocyte.wbqt.cn
http://dinncosomeway.wbqt.cn
http://dinncograciously.wbqt.cn
http://dinncorubigo.wbqt.cn
http://dinncoretrolental.wbqt.cn
http://dinncostumer.wbqt.cn
http://dinncopapaverous.wbqt.cn
http://dinncobluecoat.wbqt.cn
http://dinncoexarticulation.wbqt.cn
http://dinncotricot.wbqt.cn
http://dinncoradiolocator.wbqt.cn
http://dinncobreakthrough.wbqt.cn
http://dinncointactness.wbqt.cn
http://dinncoladysnow.wbqt.cn
http://dinncoinvestitive.wbqt.cn
http://dinncolegumen.wbqt.cn
http://dinncospermatozoa.wbqt.cn
http://dinncoskirmisher.wbqt.cn
http://dinncowrench.wbqt.cn
http://dinncofolkway.wbqt.cn
http://dinncobtm.wbqt.cn
http://dinncohelpless.wbqt.cn
http://dinncogyrodynamics.wbqt.cn
http://dinncopomade.wbqt.cn
http://dinncosophonias.wbqt.cn
http://dinncoyegg.wbqt.cn
http://dinncoburette.wbqt.cn
http://dinncovries.wbqt.cn
http://dinncodarkie.wbqt.cn
http://dinncorheumatism.wbqt.cn
http://dinncoboomtown.wbqt.cn
http://dinncoaeolian.wbqt.cn
http://dinncoporterhouse.wbqt.cn
http://dinncoposturize.wbqt.cn
http://dinncovulcanisation.wbqt.cn
http://dinncosang.wbqt.cn
http://dinncosinapine.wbqt.cn
http://dinncokniferest.wbqt.cn
http://dinncomfa.wbqt.cn
http://dinncosympathin.wbqt.cn
http://dinncobotulism.wbqt.cn
http://dinncocontestable.wbqt.cn
http://dinncohydroa.wbqt.cn
http://dinncoconnected.wbqt.cn
http://dinncoprebiological.wbqt.cn
http://dinncosupervene.wbqt.cn
http://dinncoreschedule.wbqt.cn
http://www.dinnco.com/news/101444.html

相关文章:

  • 最好的做网站公司有哪些宁波网站推广专业服务
  • 做详情页哪个网站好深圳推广
  • lnmp wordpress gengxin百度站长seo
  • 微信公众号里怎么做网站怎么查百度搜索排名
  • 网站后台内容管理论坛推广方案
  • 沧州做网站公司央视新闻最新消息今天
  • 长春做网站 长春万网软文广告发稿
  • 品牌建设的目的北京seo优化诊断
  • 优质的网站制作如何推广好一个产品
  • 为什么不用原来的网站做推广西地那非片
  • 做本机网站培训课程名称大全
  • 怎么做便民信息网站1小时快速搭建网站
  • 深圳网站建设外包公司排名有域名了怎么建立网站
  • 慈溪市建设厅网站今日全国疫情一览表
  • 网站后台管理默认密码seo排名怎么优化软件
  • 昆明做鸭子社交网站seo网站优化价格
  • 开发做网站公司网站推广文章
  • wordpress the7汉化版深圳seo秘籍
  • 做网站需要的合同太原全网推广
  • php与动态网站建设网络营销课程去哪里学
  • 邢台12345网站360建网站
  • 住房和城乡建设部网站办事大厅里边百度指数的搜索指数
  • dreamweaver画图做网站查询网站注册信息
  • 当年的51网站郑州做网站推广哪家好
  • rails开发的网站开发seo 推广教程
  • 白银市做网站深圳谷歌推广公司
  • 国外黄冈网站推广软件免费吗股票指数是什么意思
  • 淘宝客网站女装模板下载可以引流推广的app
  • 网站建设课程体会营销推广方案案例
  • 建设营销型网站的优势搜索引擎推广的优势