1.加载文件
tinyxml2::XMLDocument document;
if (document.LoadFile(filename.c_str()) != tinyxml2::XML_SUCCESS )
{
printf(“gg”);
//load不成功
//有可能是文件路径错误,也有可能是文件格式错误
}
2.获取根节点
const tinyxml2::XMLElement* root_node = document.RootElement();
3.节点的一些操作
node->Value() //获取节点的名称
node->GetText() //获取节点里面的文本,但是不包含里面的节点
对于下面的这段xml
<aaa>
111
<bbb> 222 </bbb>
333
</aaa>
node->Value()得到的是
aaa
node->GetText()得到的是
\n 111\n \n
注意上面的\n是换行符
4.节点的查找
node->FirstChildElement() //获取第一个孩子
node->FirstChildElement(“aaa”); //获取第一个名为aaa的孩子
node->NextSiblingElement() ; //获取下一个的兄弟
node->NextSiblingElement(“aaa”) ; //获取下一个名为aaa的兄弟
node->PreviousSibling(“aaa”)//获取上一个名为aaa的兄弟
node->Parent(); //获取父节点
以上四个函数若找不到则返回NULL
5.属性
attr->Name() //属性名
attr->Value() //属性值
TiXmlAttribute* node->FirstAttribute() //获取第一个属性
TiXmlAttribute* node-> LastAttribute() //获取最后一个属性
const std::string* Attribute( const std::string& name ) const;
const std::string* Attribute( const std::string& name, int* i ) const;
const std::string* Attribute( const std::string& name, double* d ) const;
在上面3个函数中,第一个函数使用字符串保存返回的属性值,第二个函数把属性值转换为整数然后返回,第三个函数把属性值转换为浮点数然后返回。不过,第二、三个函数都会以字符串的形式记录属性值,并作为函数的返回值返回。
6.错误代码
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,
UNUSED_XML_ERROR_ELEMENT_MISMATCH, // remove at next major version
XML_ERROR_PARSING_ELEMENT,
XML_ERROR_PARSING_ATTRIBUTE,
UNUSED_XML_ERROR_IDENTIFYING_TAG, // remove at next major version
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_ERROR_COUNT
};