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

阿里网站制作需要多少钱营销品牌推广公司

阿里网站制作需要多少钱,营销品牌推广公司,翻译公司网站建设多少钱,百度推广开户价格安装 TinyXml2 Git 源码下载地址:https://github.com/leethomason/tinyxml2 步骤1#xff1a;首先#xff0c;你需要下载tinyxml2的源代码。你可以从Github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2#xff1a;下载完成后#xff0c;需要将源代码解…安装 TinyXml2 Git 源码下载地址:https://github.com/leethomason/tinyxml2 步骤1首先你需要下载tinyxml2的源代码。你可以从Github或者源代码官方网站下载。并上传至/usr/local/source_code/ 步骤2下载完成后需要将源代码解压可以使用以下命令 tar -zxvf tinyxml2-8.1.0.tar.gz步骤3解压后切换到源代码目录 cd tinyxml2-8.1.0步骤4执行make make install  命令进行安装 make make install温馨提示完成以上步骤后在/usr/local/lib下会生成libtinyxml2.so动态库和/usr/local/include下生成tinyxml2.h头文件。你可以使用以下命令查看是否安装成功 ls /usr/local/lib | grep tinyxml2 ls /usr/local/include | grep tinyxml2 如果看到libtinyxml2.so和tinyxml2.h则说明成功安装了tinyxml库。 TinyXml2 库 简介 TinyXML2 是简单实用的开源的 CXML 文件解析库可以很方便的应用到现有的项 目之中。 TinyXML2 解析器相对 TinyXML1 在代码上是完全重写使其更适合于游戏开发 中使用。它使用更少的内存更快并使用更少的内存分配。 由于 XML 的树状结构TinyXML2 将 XML 的节点抽象为 XMLNodeXML 中除了把属 性 key-value 抽象为 XMLAttribute 类型外其余的都看作 XMLNode 的子类首先将整个 XML 文档抽象为 XMLDocument将声明部分抽象为 XMLDeclaration将注释抽象为 XMLComment将元素抽象为 XMLElement将文本抽象为 XMLText。   核心节点、元素、属性和值 XMLAttribute 是解析 XML 的属性的类XML 中的属性都与 XML 的 Element 绑定并且为 key-value 类型。 XMLComment       主要是处理 XML 注释的类注释的存储形式为。 XMLDeclaration 主要是处理 XML 中声明的类声明的存储形式为? declaration ?。 XMLDocument  代表 XML 整个实体TinyXML2 中只有 XMLDocument 类可以被实例化其他的类必 须通过 XMLDocument 提供的 new 方法进行实例化而不能直接实例化。XMLNode 的其他实体类把构造函数定义为 protected不能被外部实例化这样保证使用 XMLDocument 进行内存的管理避免产生内存泄漏的风险。 XMLElement    XMLElement 类是 XMLNode 中最重要的一个类其存储方式有foo/和foo/foo 两 种 形 式 它 包 含 了 一 个 XMLAttribute 的 根 指 针 这 个 root 指 针 指 向 XMLAttribute 的第一个属性键值对。 XMLHandle        主要用来访问元素。 XMLNode     是几乎 XML 所有元素(XMLAttribute 除外)的基类XML 本质是一种树形结构而 整个 XML 就是由许多的节点(XMLNode)组成在 TinyXML2 中每个 XMLNode 节点都 保存了父亲、前驱、后继、孩子头节点和孩子尾节点信息便于查询、插入、检 索。 XMLPrinter 是 XMLVisitor 类的子类主要实现的写 XML 的功能其提供了两种书写方式一 是构建 XMLDocument二是直接 push 字段。 XMLText 主要是处理 XML 文本的类文本信息又分为 CDATA 和普通文本。CDATA 是有专属的 开始字符![CDATA[而普通的文本存储形式如text。 XMLUnknown       存储形式为! unknown。 XMLVisitor 访问者模式的基类它主要定义了访问者的接口而在 XMLNode 的子类的 accept 方法中调用这些方法来完成对自身的访问。   示例代码 前提条件在/usr/local/source_code 创建目录tinyxml_demmo并创建tinyXmlDemo.cpp文件文件内容如下: #include iostream #include tinyxml2.h #include stdio.h #include stdlib.husing namespace tinyxml2;/* enum XMLError {XML_SUCCESS 0,XML_NO_ATTRIBUTE,XML_WRONG_ATTRIBUTE_TYPE,XML_ERROR_FILE_NOT_FOUND,XML_ERROR_FILE_COULD_NOT_BE_OPENED,XML_ERROR_FILE_READ_ERROR,XML_ERROR_PARSING_ELEMENT,XML_ERROR_PARSING_ATTRIBUTE,XML_ERROR_PARSING_TEXT,XML_ERROR_PARSING_CDATA,XML_ERROR_PARSING_COMMENT,XML_ERROR_PARSING_DECLARATION,XML_ERROR_PARSING_UNKNOWN,XML_ERROR_EMPTY_DOCUMENT,XML_ERROR_MISMATCHED_ELEMENT,XML_ERROR_PARSING,XML_CAN_NOT_CONVERT_TEXT,XML_NO_TEXT_NODE,XML_ELEMENT_DEPTH_EXCEEDED,XML_ERROR_COUNT }; *///创建XML文件 int createXML(const char* xmlPath) {XMLDocument doc;if (XML_ERROR_FILE_NOT_FOUND ! doc.LoadFile(xmlPath)) {std::cout file has been existed ! std::endl;return 0;}//添加声明 ?xml version1.0 encodingUTF-8 ?XMLDeclaration *declaration doc.NewDeclaration();doc.InsertFirstChild(declaration);XMLElement *root doc.NewElement(Users);doc.InsertEndChild(root);XMLElement *userNode doc.NewElement(User);//添加属性userNode-SetAttribute(Name, milo);userNode-SetAttribute(Password, pwd);root-InsertEndChild(userNode);return doc.SaveFile(xmlPath); }void loadXML(const char* xmlPath) {XMLDocument doc;if (doc.LoadFile(xmlPath) ! XML_SUCCESS) {std::cout load xlm file failed std::endl;return;}XMLPrinter printer;doc.Print( printer);std::cout printer.CStr(); }//添加性别号码邮箱 再添加一个用户 int addXML1(const char* xmlPath) {XMLDocument doc;if (doc.LoadFile(xmlPath) ! XML_SUCCESS) {std::cout load xlm file failed std::endl;return -1;}XMLElement *root doc.RootElement();XMLElement *userNode root-FirstChildElement(User);XMLElement *gender doc.NewElement(Gender);XMLText* genderText doc.NewText(man);gender-InsertFirstChild(genderText);userNode-InsertFirstChild(gender);XMLElement *mobile doc.NewElement(Mobile);mobile-InsertFirstChild(doc.NewText(186****3143));userNode-InsertEndChild(mobile);XMLElement *email doc.NewElement(Email);email-InsertFirstChild(doc.NewText(472251823qq.com));userNode-InsertEndChild(email);XMLElement *userNode2 doc.NewElement(User);userNode2-SetAttribute(Name, king);userNode2-SetAttribute(Password, pwd2);root-InsertEndChild(userNode2);XMLElement *mobile2 doc.NewElement(Mobile);mobile2-InsertFirstChild(doc.NewText(186****3143));userNode2-InsertEndChild(mobile2);return doc.SaveFile(xmlPath); }//在性别后面添加年龄再添加一个号码 int addXML2(const char* xmlPath) {XMLDocument doc;if (doc.LoadFile(xmlPath) ! XML_SUCCESS){std::coutload xml file failedstd::endl;return false;}XMLElement* rootdoc.RootElement();XMLElement* userNoderoot-FirstChildElement(User);XMLElement* gender userNode-FirstChildElement(Gender);XMLElement* age doc.NewElement(Age);age-InsertFirstChild(doc.NewText(18));userNode-InsertAfterChild(gender,age);XMLElement* mobile userNode-FirstChildElement(Mobile);mobile-SetAttribute(Location,home);XMLElement* mobile1 doc.NewElement(Mobile);mobile1-SetAttribute(Location,company);mobile1-InsertFirstChild(doc.NewText(186****3143));userNode-InsertAfterChild(mobile, mobile1);return doc.SaveFile(xmlPath); }//删除第一个号码删除第二个号码的属性 int deleteXML(const char* xmlPath) {XMLDocument doc;if (doc.LoadFile(xmlPath) ! XML_SUCCESS) {std::cout load xlm file failed std::endl;return -1;}XMLElement *root doc.RootElement();XMLElement *userNode root-FirstChildElement(User);XMLElement *mobile userNode-FirstChildElement(Mobile);userNode-DeleteChild(mobile);XMLElement *mobile2 userNode-FirstChildElement(Mobile);mobile2-DeleteAttribute(Location);return doc.SaveFile(xmlPath); }//将milo的年龄改为10000岁将king的号码改为8888结尾 int updateXML(const char* xmlPath) {XMLDocument doc;if (doc.LoadFile(xmlPath) ! XML_SUCCESS) {std::cout load xlm file failed std::endl;return -1;}XMLElement *root doc.RootElement();XMLElement *userNode root-FirstChildElement(User);while (userNode ! NULL) {if (0 strncmp(milo, (userNode-Attribute(Name)), 11)) {userNode-FirstChildElement(Age)-SetText(10000);userNode userNode-NextSiblingElement();} else if (0 strncmp(king, (userNode-Attribute(Name)), 11)) {userNode-FirstChildElement(Mobile)-SetText(186****8888);userNode userNode-NextSiblingElement();} else {userNode userNode-NextSiblingElement();}}return doc.SaveFile(xmlPath); }//将milo的信息打印出来 int selectXML(const char* xmlPath) {XMLDocument doc;if(doc.LoadFile(xmlPath)!XML_SUCCESS){std::coutload xml file failedstd::endl;return false;}XMLElement* rootdoc.RootElement();XMLElement* userNoderoot-FirstChildElement(User);while(userNode ! NULL){if( 0 strncmp(milo,(userNode-Attribute(Name)),11)){std::cout userNode-Attribute(Name) std::endl;std::cout userNode-Attribute(Password) std::endl;std::cout userNode-FirstChildElement(Age)-GetText() std::endl;std::cout userNode-FirstChildElement(Gender)-GetText() std::endl;std::cout userNode-FirstChildElement(Mobile)-GetText() std::endl;std::cout userNode-FirstChildElement(Email)-GetText() std::endl;userNode userNode-NextSiblingElement();} else {userNode userNode-NextSiblingElement();}}return 0; }int main( int argc, const char ** argv ) {char xmlPath[] ./0voice.xml;/*创建*/createXML(xmlPath);loadXML(xmlPath);printf(------------------------------\n);/*增*/addXML1(xmlPath);loadXML(xmlPath);printf(------------------------------\n);addXML2(xmlPath);loadXML(xmlPath);printf(------------------------------\n);/*删*/deleteXML(xmlPath);loadXML(xmlPath);printf(------------------------------\n);/*改*/updateXML(xmlPath);loadXML(xmlPath);printf(------------------------------\n);/*查*/selectXML(xmlPath);return 0; }源码编译执行如下指令 g tinyXmlDemo.cpp -o tinyXmlDemo -L/usr/local/lib/ -ltinyxml2执行效果截图 [rootlocalhost tinyxml_demmo]# g tinyXmlDemo.cpp -o tinyXmlDemo -L/usr/local/lib/ -ltinyxml2 [rootlocalhost tinyxml_demmo]# ll 总用量 120 -rw-r--r--. 1 root root 168 10月 23 15:36 parseXml.xml -rwxr-xr-x. 1 root root 110536 10月 23 15:48 tinyXmlDemo -rw-r--r--. 1 root root 7091 10月 23 15:47 tinyXmlDemo.cpp [rootlocalhost tinyxml_demmo]# ./tinyXmlDemo ?xml version1.0 encodingUTF-8? UsersUser Namemilo Passwordpwd/ /Users ------------------------------ ?xml version1.0 encodingUTF-8? UsersUser Namemilo PasswordpwdGenderman/GenderMobile186****3143/MobileEmail472251823qq.com/Email/UserUser Nameking Passwordpwd2Mobile186****3143/Mobile/User /Users ------------------------------ ?xml version1.0 encodingUTF-8? UsersUser Namemilo PasswordpwdGenderman/GenderAge18/AgeMobile Locationhome186****3143/MobileMobile Locationcompany186****3143/MobileEmail472251823qq.com/Email/UserUser Nameking Passwordpwd2Mobile186****3143/Mobile/User /Users ------------------------------ ?xml version1.0 encodingUTF-8? UsersUser Namemilo PasswordpwdGenderman/GenderAge18/AgeMobile186****3143/MobileEmail472251823qq.com/Email/UserUser Nameking Passwordpwd2Mobile186****3143/Mobile/User /Users ------------------------------ ?xml version1.0 encodingUTF-8? UsersUser Namemilo PasswordpwdGenderman/GenderAge10000/AgeMobile186****3143/MobileEmail472251823qq.com/Email/UserUser Nameking Passwordpwd2Mobile186****8888/Mobile/User /Users ------------------------------ milo pwd 10000 man 186****3143 472251823qq.com
http://www.dnsts.com.cn/news/98766.html

相关文章:

  • 网站主要内容包括什么不花钱建网站
  • 做公众号时图片的网站网站怎样建设
  • 前端搜索网站引擎怎么做招标网招标信息
  • 塑业东莞网站建设深圳高端网站建设收费
  • 旅游网站制作代码手机网站一般多宽
  • 怎么做视频平台网站吗外贸建个网站多少钱
  • 高端企业网站建设蓦然郑州网站建设theme wordpress
  • 家里做服务器开网站宁波企业网站开发
  • 长沙信息网宁波专业优化网站制作公司
  • 网站标题logo制作黄冈论坛遗爱网
  • pc网站优势张家口职教中心计算机网站建设
  • 肥城做网站tahmwlkj苏州外贸网站建设运营
  • 唐山哪里有建设网站的简单大气网站模板
  • 做书app下载网站有哪些百度快照投诉中心官网
  • 网站活跃度怎么做门户导航网页模板
  • 提高企业网站的访问率做模型常说的d站是什么网站
  • 高职网站建设专业书wordpress查询分页
  • 站长工具是什么网站更换空间对优化的影响
  • jsp网站开发工资自己做商城网站 哪种好
  • 网站开发需求分析文档中国菲律宾撤侨
  • 建设网站为什么要虚拟主机静态网站开发与实施的论文
  • 做网站设计用什么软件棋牌网站哪里做
  • 网站建设的意义是什么企业服务类型有哪些
  • 网站备案帐号wordpress字段
  • 厦门网站建设是什么服装网站制作
  • 做旅游产品的网站有哪些代挂网站维护
  • 苏州网站快速排名优化校园网上超市网站建设战略规划
  • 武安做网站现在网站开发和软件开发
  • 海南住建部建设网站的网站海外公司注册在哪里比较好
  • 德安县建设局网站wordpress 插件 手机