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

网站建设公司好哪家好定西市小企业网站建设

网站建设公司好哪家好,定西市小企业网站建设,北京网络营销推广公司,搜索引擎优化的重要性使用tinyxml2#xff0c;得知道一些xml基础 xml tutorial--菜鸟 tinyxml2类对象 链接 结构 XMLNode 什么是节点 节点#xff1a;元素、声明、文本、注释等。 XMLDocument xml文档(文件)对象。 作用#xff1a; 加载xml文件#xff0c; tinyxml2作用 先定义两个宏 …使用tinyxml2得知道一些xml基础 xml tutorial--菜鸟 tinyxml2类对象 链接 结构 XMLNode 什么是节点 节点元素、声明、文本、注释等。 XMLDocument xml文档(文件)对象。 作用 加载xml文件 tinyxml2作用 先定义两个宏 #ifndef XMLCheckResultDocu#define XMLCheckResultDocu(eResult,object) if (eResult ! XML_SUCCESS) { printf(Error: %s\n, object-ErrorStr()); return eResult; } #endif #ifndef XMLCheckResult#define XMLCheckResult(eResult) if (eResult ! XML_SUCCESS) { printf(Error: %i\n, eResult); return eResult; } #endif 1extract xml文件内容 提取一个元素所有属性 if(node-ToElement()) {auto element dynamic_castXMLElement*(node);cout XML 元素name element-Name() , value element-Value() endl;const XMLAttribute* attribute element-FirstAttribute();while (attribute ! nullptr) {cout \t属性 attribute-Name() attribute-Value() endl;attribute attribute-Next();}} 元素的name和value是什么 元素的名称Name指的是元素的标签名例如 book 元素的名称为 book。 元素的值Value指的是元素包含的文本内容也称为元素的数据Data。在 XML 中元素的值位于开始标记和结束标记之间例如 bookXML Basics/book 中的值为 XML Basics。 需要注意的是元素的值和元素的属性并不是同一概念。元素的属性是位于元素开始标记中的信息用于描述元素的附加属性和特征。元素的值则是位于元素开始标记和结束标记之间的文本内容描述了元素的数据内容。 提取一个节点的所有子节点和兄弟节点 void traversingXML(XMLNode* node) {printf(node-Value());if(node-NoChildren()) return;XMLNode* child node-FirstChild();while(child ! nullptr) {traversingXML(child);child child-NextSibling();} }获取xml文档的第一个节点 注意第一个节点不一定是element的根节点可能是declaration或者其他类型。 在 XML 中根节点root node是整个 XML 文档的最上层节点所有其他节点都是根节点的子节点或后代节点。 根节点是 XML 文档中唯一一个没有父节点的节点。它通常是整个 XML 文档的第一个节点也是唯一一个与 XML 文档的命名空间相关的节点。在 XML 中根节点与 XML 文档的首行XML 声明一起构成了完整的 XML 文档头部信息。 点一个 XML 文件只有一个根节点所有其他节点都是根节点的子节点或者子节点的子节等。根节点的格式如下所示 xml ?xml version1.0 encodingUTF-8? root    !-- other nodes... -- /root 在示例中root 是根节点。根节点可以包含其他节点例如元素节点、注释节点、文本节点等。在 XML 解析和处理时可以通过访问根节点来遍历整个 XML 文档并处理其中的数据内容。 XMLNode * pRoot xmlDoc.FirstChild(); if (pRoot nullptr) return XML_ERROR_FILE_READ_ERROR; 获取根元素 XMLElement* getRootElement(XMLNode* node){if(nodenullptr){std::coutcan not get root element,node is empty.std::endl;return nullptr;}XMLNode *childnode;while(child){if(child-ToElement()!nullptr) return (child-ToElement());childchild-NextSibling();}return nullptr; } Query查询元素指定类型的text并且获取 QueryXXXText() int iOutInt; eResult pElement-QueryIntText(iOutInt); XMLCheckResult(eResult); 如果text不能convert为指定的类型机会返回失败。 Query查询元素指定类型的属性并提取 int iOutDay, iOutYear;eResult pElement-QueryIntAttribute(day, iOutDay); XMLCheckResult(eResult);eResult pElement-QueryIntAttribute(year, iOutYear); XMLCheckResult(eResult); 2创建xml文件内容 链接 案例 #include iostream #include tinyxml2/tinyxml2.husing namespace tinyxml2;void createXML(){XMLDocument document;XMLDeclaration* declarationdocument.NewDeclaration(xml version1.0 encodingUTF-8);XMLComment* commentdocument.NewComment(This is a comment);XMLUnknown* unknowndocument.NewUnknown(unknown type);XMLElement* persondocument.NewElement(person);person-SetAttribute(name,laowang);person-SetAttribute(age,22);person-SetAttribute(gender,man);XMLElement* addrdocument.NewElement(address);addr-SetAttribute(name,guangnan);addr-SetAttribute(postion,sourthwest);XMLElement* enterprisedocument.NewElement(enterprise);enterprise-SetAttribute(first,stuudent);enterprise-SetAttribute(second,xiaobai);enterprise-SetAttribute(third,peitian);XMLElement* successdocument.NewElement(success);success-SetAttribute(stage,highest);XMLText* textdocument.NewText(baby to you);success-InsertEndChild(text);enterprise-InsertEndChild(success);person-InsertEndChild(addr);person-InsertEndChild(enterprise);document.InsertEndChild(declaration);document.InsertEndChild(comment);document.InsertEndChild(unknown);document.InsertEndChild(person);document.SaveFile(person.xml); }int main(){createXML();return 0; } 生成的xml文件 函数 外网链接 链接1 链接2 链接3 new类型的函数 比如newElement() XMLNode * InsertFirstChild(XMLNode *addThis) XMLNode * InsertAfterChild(XMLNode *afterThis, XMLNode *addThis) XMLNode * InsertEndChild(XMLNode *addThis) void DeleteChild(XMLNode *node) void DeleteChildren() SetText() 重载函数参数类型可以多种。 设置text的。 所以说一个元素的text可以建立XMLText对象然后insert;也可以用这个函数直接生成。 SetValue() 设置元素名称 element的函数 Attribute()获取指定名称的属性值 - FindAttribute()查找指定名称的属性 - FirstAttribute()获取第一个属性 element对text的处理函数 XMLElement中name,value,text的区别 name和value返回的都是元素的nameGetText返回的才是元素的text. Value(): void printElementAllInfo(XMLElement* rootElement,int level){if(rootElementnullptr) return;int lelevel;while(le--) std::cout ;std::coutelement name:rootElement-Name();// if(rootElement-GetText()){// std::couttext data:rootElement-GetText();// }if(rootElement-Value()){std::cout text data:rootElement-Value();}std::coutstd::endl;lelevel;while(le--) std::cout ;std::coutrootElement-Name() attribute:std::endl;const XMLAttribute* attirbuterootElement-FirstAttribute();while(attirbute){lelevel;while(le--) std::cout ;std::coutattirbute-Name()attirbute-Value()std::endl;attirbuteattirbute-Next();}//print child element of his elementprintElementAllInfo(rootElement-FirstChildElement(),level1);//print sibling element of this elementprintElementAllInfo(rootElement-NextSiblingElement(),level); } GetText(): void printElementAllInfo(XMLElement* rootElement,int level){if(rootElementnullptr) return;int lelevel;while(le--) std::cout ;std::coutelement name:rootElement-Name();if(rootElement-GetText()){std::couttext data:rootElement-GetText();}std::coutstd::endl;lelevel;while(le--) std::cout ;std::coutrootElement-Name() attribute:std::endl;const XMLAttribute* attirbuterootElement-FirstAttribute();while(attirbute){lelevel;while(le--) std::cout ;std::coutattirbute-Name()attirbute-Value()std::endl;attirbuteattirbute-Next();}//print child element of his elementprintElementAllInfo(rootElement-FirstChildElement(),level1);//print sibling element of this elementprintElementAllInfo(rootElement-NextSiblingElement(),level); } 判断element中有没有text 通过GetText的返回值。 获取text----GetText() 注意GetText返回指针而且text不一定存在所以一定要对GetText的返回值进行判断。 获取element的下一个兄弟element rootElement-NextSiblingElement() 获取元素的子元素---firstChildElement() 获取第一个子元素 XMLElement * pElement pRoot-FirstChildElement();//不使用参数默认获取第一个子元素 if (pElement nullptr) return XML_ERROR_PARSING_ELEMENT; 使用元素名称获取元素的指定子元素 XMLElement * pElement pRoot-FirstChildElement(IntValue); if (pElement nullptr) return XML_ERROR_PARSING_ELEMENT; 确保子元素名不同。 attribute的函数 提取属于同一个元素的当前属性的下一个属性---Next() XMLNode的函数 企图当前节点的下一个兄弟节点---NextSibling() XMLElement* getRootElement(XMLNode* node){if(nodenullptr){std::coutcan not get root element,node is empty.std::endl;return nullptr;}XMLNode *childnode;while(child){if(child-ToElement()!nullptr) return (child-ToElement());childchild-NextSibling();}return nullptr; } element因为继承这个所以有 1NextSibling()----注意这个获取的不一定是element 2NextSiblingElement() firstChild()--提取一个节点 注意firstChild提取的不一定是element因为这个函数提取的是节点而不是元素。 element因为继承XMLNode,所以有 1firstChild()---注意这个获取的不一定是element 2firstChildElement() tinyxml2错误枚举 文件读取错误 if (pRoot nullptr) return XML_ERROR_FILE_READ_ERROR; 元素解析错误 XMLElement * pElement pRoot-FirstChildElement(IntValue); if (pElement nullptr) return XML_ERROR_PARSING_ELEMENT; 属性解析错误 szAttributeText pElement-Attribute(month); if (szAttributeText nullptr) return XML_ERROR_PARSING_ATTRIBUTE; std::string strOutMonth szAttributeText; XMLError 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 }; ErrorStr() 当发生错误时可以直接使用节点对象的ErrorStr()成员函数输出XMLError的错误类型。 注意这个函数只有document对象才有其他类型的节点没有。 #ifndef XMLCheckResultDocu#define XMLCheckResultDocu(eResult,object) if (eResult ! XML_SUCCESS) { printf(Error: %s\n, object-ErrorStr()); return eResult; } #endif #ifndef XMLCheckResult#define XMLCheckResult(eResult) if (eResult ! XML_SUCCESS) { printf(Error: %i\n, eResult); return eResult; } #endif
http://www.ho-use.cn/article/10822789.html

相关文章:

  • 石家庄网站建设找汉狮做直播网站找哪个网站好
  • 鹤壁做网站公司国外网站推广软件
  • 自己做的网站怎么被搜索出来制作网页app
  • 全球建筑网站网站建设在哪里备案
  • 绍兴网站建设团队国外网站平台有哪些
  • 快站app下载凡客帆布鞋
  • 做的比较好的返利网站知乎wordpress 文章公开编辑
  • 中国企业网官方网站查询可以在哪些网站做翻译兼职
  • 做网站新手流程网站权重怎么看
  • 前几年很火的网站建设公司广州高档网站建设
  • 怎样做展示型网站常州制作网站价格
  • 福建省建设厅网站投诉公众号开发信息开发者密码是什么
  • 校园网站平台建设郑州信息网平台
  • 江苏工信部网站备案查询白城网站开发
  • 怎样 建设电子商务网站sem推广代运营
  • 做网站的软件图标机构类网站有哪些
  • 衡水企业网站设计报价正能量网站下载
  • 男男互做网站泰国小网站下载渠道有哪些
  • 网站数据丢失了做数据恢复需多久学习网站建设网站
  • 深圳网站开发公司有哪些wordpress写博客流行吗
  • 网站开发专业公司有哪些龙岗高端网站建设
  • 淄博网站设计方案短剧推广平台app
  • 江山市建设局网站本地主机 搭建网站
  • 想开民宿自己怎么做介绍的网站微信营销软件破解版
  • 钦州市网站建设嘉兴制作手机网站
  • 做后台财务系统网站网络公司可以做哪些业务
  • 新手做自己的网站小程序推广怎么赚钱
  • 网站注册wordpress京东客系统
  • 嘉兴门户网站企业 网站 程序
  • 网站制作代码大全最简单的做网站的工具