Homepage:
http://www.grinninglizard.com/tinyxml/
download:
http://sourceforge.net/projects/tinyxml
TinyXml的编程模型
TiXmlBase:其它类的基类,是个抽象类
TiXmlNode:表示一个节点,包含节点的一般方法,如访问自节点、兄弟节点、编辑自身、编辑子节点
TiXmlDocument:表示整个XML文档,不对应其中某个特定的节点。
TiXmlElement:表示元素节点,可以包含子节点和TiXmlAttribute
TiXmlComment:表示注释
TiXmlDeclaration:表示声明
TiXmlText:表示文本节点
TiXmlUnknown:表示未知节点,通常是出错了
TiXmlAttribute:表示一个元素的属性
示例:
xml文件
<?wpl version="1.0"?>
<body>
<persons>
<person name="张三" sex="男" age="22">
<phone>123456</phone>
<address>北京</address>
</student>
<person name="李四" sex="男" age="20">
<phone>654321</phone>
<address>上海</address>
</person>
</persons>
</body>
TiXmlDocument* document = new TiXmlDocument();
document->LoadFile("f:\\test2.xml");
TiXmlElement* root = document->RootElement();
TiXmlElement* persons= root->FirstChildElement( "persons" );
TiXmlElement* person= persons->FirstChildElement( "person" );
while ( person)
{
TiXmlAttribute* attributeOfPerson = person->FirstAttribute();
while ( attributeOfStudent )
{
std::cout << attributeOfStudent->Name() << " : " << attributeOfStudent->Value() << std::endl;
attributeOfStudent = attributeOfStudent->Next();
}
// std::cout << "name:" <<person->Attribute("name")<< std::endl;
// std::cout << "age:" <<person->Attribute("age")<< std::endl;
TiXmlElement* phoneElement = person->FirstChildElement();
std::cout << "phone" << " : " << phoneElement->GetText() << std::endl;
TiXmlElement* addressElement = phoneElement->NextSiblingElement();
std::cout << "address" << " : " << phoneElement->GetText() << std::endl;
person= person->NextSiblingElement();
}
2.用句柄的话就不会像上面这么冗长了,使用TiXmlHandle类
mediaplay的播放列表
TiXmlDocument doc("f:\\ls.wpl");
doc.LoadFile();
TiXmlHandle docHandle( &doc );
TiXmlElement* seq = docHandle.FirstChildElement( "smil" ).FirstChildElement( "body" ).FirstChildElement( "seq" ).Element();
if ( seq )
{
TiXmlElement* media = seq->FirstChildElement( "media" );
while(media)
{
TiXmlAttribute* attributeOfMedia = media->FirstAttribute();
while(attributeOfMedia){
cout <<"media:"<<attributeOfMedia->Value()<<endl;
attributeOfMedia=attributeOfMedia->Next();
}
media = media->NextSiblingElement();
}
}