C++中Tinyxml的使用

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();
  }
  
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值