【XML】TinyXML 详解(二):接口详解 【C++】郭老二博文之:C++目录 1、XML测试文件(laoer.xml) 2、读取文件并打印 加载xml文件:TiXmlDocument::LoadFile() 错误信息:TiXmlDocument::ErrorDesc() 打印XML内容:TiXmlDocument::Print( stdout ) 4、属性相关接口 4.1 属性 属性有四类接口 Attribute :属性,如果返回空,则表示不存在QueryStringAttribute:属性,返回值“错误检查”值C++ STL(使用std::string)C++模版接口 1)Attribute 原型如: 2)QueryStringAttribute 原型如: 3)C++ STL(使用std::string) 原型如: 4)C++模版接口 原型如: 4.2 设置属性 1)SetAttribute 原型如: 2)SetDoubleAttribute 原型如: void SetDoubleAttribute( const char * name, double value ); 3)C++STL(使用std::string) 原型如: 4.3 删除属性 5、遍历子素 1)返回第一个子素:TiXmlElement* TiXmlNode::FirstChildElement() 2)返回第一个匹配“value”的子素:TiXmlElement* TiXmlElement* FirstChildElement( const std::string& _value ) 3)返回下一个兄弟素:TiXmlElement* NextSiblingElement() 4)返回下一个匹配“value”的兄弟素:TiXmlElement* NextSiblingElement( const std::string& _value) 6、TiXmlHandle 类 6.1 检查空指针 TiXmlHandle主要用来检测空节点指针(null)的类。 注意:TiXmlHandle 不是DOM 素树的一部分,类关系如下
例如,遍历如下XML文档: TiXmlElement每次子素后,都需要检查是否为NULL,否则操作NULL空指针将会报错 使用 TiXmlHandle 可以简化上面的操作 6.2 遍历素 下面使用while循环遍历素,看上去很合理,其实Child方法内部是一个线性遍历来查找素,即下面的示例是两个嵌入的while循环 代替方法: 注意上面 NextSiblingElement(“Child”) 和 NextSiblingElement()的区别 6.3 常用接口 TiXmlHandle FirstChild() const;//返回第一个子节点的句柄: TiXmlHandle FirstChild( const std::string& _value ) const; //返回给定名称的第一个子节点的句柄。 TiXmlHandle FirstChildElement() const;//返回第一个子素的句柄。 TiXmlHandle FirstChildElement( const std::string& _value ) const;//返回给定名称的第一个子素的句柄。 TiXmlHandle Child( int index ) const;//返回指定索引“index”子节点的句柄。 TiXmlHandle Child( const std::string& _value, int index ) const;//返回给定名称、指定索引“index”子节点的句柄。 TiXmlHandle ChildElement( int index ) const;//返回指定索引“index”子素的句柄。 TiXmlHandle ChildElement( const std::string& _value, int index ) const//返回给定名称、指定索引“index”子素的句柄。 节点、素、文本、未知素的接口 TiXmlNode* ToNode() const TiXmlElement* ToElement() const TiXmlText* ToText() const TiXmlUnknown* ToUnknown() const 7、创建XML 1)TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); 在“最后子节点”后添加新节点。如果发生错误则返回NULL。(addThis)是const引用,在内部会被复制addThis.Clone() 2)TiXmlNode* LinkEndChild( TiXmlNode* addThis ); 在“最后子节点”后添加新节点,这里addThis 是指针,将被作为链表的一个项,插入到链表中,因此它内存管理将有父节点TiXmlNode接管。 3)TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); 在指定子节点之前添加子节点。 4)TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); 在指定的子素之后添加子素。 5)TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); 替换指定的节点 6)bool RemoveChild( TiXmlNode* removeThis ); 删除指定的节点 修改后的XML如下,请自行和博文开头的做对比
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/79805.html