C++中Tinyxml的使用

来源:互联网 发布:重庆seo外包公司费用 编辑:程序博客网 时间:2024/05/21 11:14
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文件

 <?wplversion="1.0"?>
 <body>

  <persons>
   <personname="张三"  sex="男"age="22">
    <phone>123456</phone>
    <address>北京</address>
   </student>
   <personname="李四"  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();
  }
  
 }

原创粉丝点击