zoukankan      html  css  js  c++  java
  • xml文件读取

    下载tinyxml 库,下载路径:https://sourceforge.net/projects/tinyxml/

     XML文件结构讲解

    <?xml version="1.0"?>                        //声明
    
    <rootnode>                                    //根节点 childnode1是节点的名字 opencv-matrix:这个是节点的属性
    <childnode1 type_id="opencv-matrix">            //子节点1
      <rows>3</rows>                                    //孙节点11
      <cols>3</cols>                                    //孙节点12
      <dt>d</dt>                                        //孙节点13
      <data>                                            //孙节点14  data是节点的名字,这个没有属性,但是有内容,childnode1就没有内容
        1 2 3 4 5 6 
        7 8 9 1 2 3
        </data></childnode1>
    
    <childnode2 type_id="opencv-matrix">            //子节点2
      <rows>4</rows>                                    //孙节点21
      <cols>4</cols>                                    //孙节点22
      <dt>d</dt>                                        //孙节点23
      <data>                                            //孙节点24
        1 2 3 4 5 6 7 8
        1 2 3 4 5 6 7 8
        </data></childnode2>
    
    <childnode3 type_id="opencv-matrix">            //子节点3
      <rows>3</rows>                                    //孙节点31
      <cols>1</cols>                                    //孙节点32
      <dt>d</dt>                                        //孙节点33
      <data>                                            //孙节点34
       1 2 3 
       </data></childnode3>
    </rootnode>

    tinyxml下载

    将.h以及.cpp文件放进工程内

    代码

    #include "tinyxml.h"
    #include "tinystr.h"
    
    TiXmlDocument doc;
        bool ret;
    
        //判断文件是否存在
        ret = doc.LoadFile("\1.xml");
        if (!ret){
            cerr << doc.ErrorDesc() << endl;
            exit(1);
        } 
    
        //tinyxml 的打印器, 打印整体的xml文件
        TiXmlPrinter printer;
        doc.Accept(&printer);
        //cout << printer.CStr() << endl;
    
    
        //读取root节点, 第一层节点
        //表示找第一个名字是opencv的节点,如果为空就表示找第一个节点
        //可以和pChild = pChild->NextSibling() 这个语句搭配使用,一直找下一个节点
        TiXmlElement* root = doc.FirstChildElement("root");
        if (root == NULL){
            cerr << " no root" << endl;
            doc.Clear();
            exit(1);
        }  
        cout << "root node value: " << root->Value() << endl; 
        
        //读取个child节点, 第二层节点
        TiXmlElement* childnode1 = root->FirstChildElement("childnode1");
        if (childnode1 == NULL){
            cerr << " No chldnode1 element." << endl;
            doc.Clear();
            exit(1);
        } 
        cout <<  childnode1->Value() << endl;
        TiXmlAttribute *childnode1attri =  childnode1->FirstAttribute(); 
        cout <<"childnode1attri  name : " << chldnode1attri->Value() << endl; // 这里没有内容,所以GetText() 也没有结果
    
        //读取data,第三层节点 
        TiXmlElement* childnode1Data = childnode1->FirstChildElement("data");
        if (childnode1 == NULL){
            cerr << " No  data element." << endl;
            doc.Clear();
            exit(1);
        } 
        cout << childnode1data->Value() << endl;            //输出data字符
        cout <<childnode1data->GetText() << endl;      //输出data的内容              //这里没有属性,所以打印不出来
  • 相关阅读:
    闭包
    线程与进程
    异常处理
    socket编程
    面向对象编程
    模块
    正则表达式
    递归、二分查找、冒泡算法
    装饰器
    迭代器与生成器
  • 原文地址:https://www.cnblogs.com/yunshangyue71/p/13552268.html
Copyright © 2011-2022 走看看