Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. read a write a XML file withe QXmlStreamWriter/QXmlStreamReader
Forum Updated to NodeBB v4.3 + New Features

read a write a XML file withe QXmlStreamWriter/QXmlStreamReader

Scheduled Pinned Locked Moved Solved General and Desktop
4 Posts 3 Posters 589 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Alex42
    wrote on 28 Jul 2021, 09:31 last edited by
    #1

    Hello Every One,
    1 - I created a XML file using QXmlStreamWriter class , the file containe the data of my user interface ( lineEdit) ( when we click on the Save button)
    2- and now i wante to load the data (when we click on the load button),
    i'm trying to load the data using a QXmlStreamReader, but without success ,
    may be some one can helpe me
    thanks in advance

    Here is the XML file writing code.
    <<

    QString sFileXMLName = QFileDialog::getSaveFileName(this, tr(" Xml File"), "C:/ ...", tr("Fichier Xml (*.xml)"));
    
         QFile fFileXML(sFileXMLName);
    
      
         if(!fFileXML.open(QFile::WriteOnly | QFile::Text))
             return;
    
         QXmlStreamWriter xmlWriter(&fFileXML);
    
         xmlWriter.setAutoFormatting(true);
    
         //the norme of codification  XML file 
         xmlWriter.writeStartDocument();
    
         //Element root  of xml file 
         xmlWriter.writeStartElement("Calib");
         
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui->lineEdit->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_9 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_2 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_10 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_3 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_11 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_4 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_12 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_5 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_13 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_6 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_14 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_7 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_15 ->text());
             xmlWriter.writeEndElement();
    
             xmlWriter.writeStartElement("CalibPt");
             xmlWriter.writeTextElement("conv", ui-> lineEdit_8 ->text());
             xmlWriter.writeTextElement("calib",ui-> lineEdit_16 ->text());
             xmlWriter.writeEndElement();
    
             //close Element
             xmlWriter.writeEndElement();
    
         //close element  "Root calib"
         xmlWriter.writeEndElement();
    
         //Finalised the  XML  file 
         xmlWriter.writeEndDocument();
    
         //close the xml file XML to save   the document
         fFileXML.close();
    

    }

    V 1 Reply Last reply 28 Jul 2021, 10:50
    0
    • M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 28 Jul 2021, 09:37 last edited by
      #2

      Hi
      Did you see this one?
      https://www.walletfox.com/course/qxmlstreamreaderexample.php

      It explains it pretty well.

      1 Reply Last reply
      2
      • A Alex42
        28 Jul 2021, 09:31

        Hello Every One,
        1 - I created a XML file using QXmlStreamWriter class , the file containe the data of my user interface ( lineEdit) ( when we click on the Save button)
        2- and now i wante to load the data (when we click on the load button),
        i'm trying to load the data using a QXmlStreamReader, but without success ,
        may be some one can helpe me
        thanks in advance

        Here is the XML file writing code.
        <<

        QString sFileXMLName = QFileDialog::getSaveFileName(this, tr(" Xml File"), "C:/ ...", tr("Fichier Xml (*.xml)"));
        
             QFile fFileXML(sFileXMLName);
        
          
             if(!fFileXML.open(QFile::WriteOnly | QFile::Text))
                 return;
        
             QXmlStreamWriter xmlWriter(&fFileXML);
        
             xmlWriter.setAutoFormatting(true);
        
             //the norme of codification  XML file 
             xmlWriter.writeStartDocument();
        
             //Element root  of xml file 
             xmlWriter.writeStartElement("Calib");
             
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui->lineEdit->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_9 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_2 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_10 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_3 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_11 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_4 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_12 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_5 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_13 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_6 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_14 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_7 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_15 ->text());
                 xmlWriter.writeEndElement();
        
                 xmlWriter.writeStartElement("CalibPt");
                 xmlWriter.writeTextElement("conv", ui-> lineEdit_8 ->text());
                 xmlWriter.writeTextElement("calib",ui-> lineEdit_16 ->text());
                 xmlWriter.writeEndElement();
        
                 //close Element
                 xmlWriter.writeEndElement();
        
             //close element  "Root calib"
             xmlWriter.writeEndElement();
        
             //Finalised the  XML  file 
             xmlWriter.writeEndDocument();
        
             //close the xml file XML to save   the document
             fFileXML.close();
        

        }

        V Offline
        V Offline
        VRonin
        wrote on 28 Jul 2021, 10:50 last edited by
        #3

        @Alex42 said in read a write a XML file withe QXmlStreamWriter/QXmlStreamReader:

        i'm trying to load the data using a QXmlStreamReader, but without success ,

        Show this part of the code please

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        1 Reply Last reply
        2
        • A Offline
          A Offline
          Alex42
          wrote on 28 Jul 2021, 12:16 last edited by
          #4

          @mrjj , thank you for your response , i found the exemple very usfule ,
          @VRonin, i resolved the probleme , juste may program it's note optimized , becouse i have a lote of condition ,

          thanks anyways

          for the curios

          QString sFilePath = QFileDialog::getOpenFileName(this, tr("Open XML File ..."), "E:/", tr("XMLFile (*.xml)"));
          
             if(sFilePath.isEmpty())
             {
                 QMessageBox::critical(this, tr("Open File XML"), tr("the file is empty !"));
                 return;
             }
          
          
             QFileInfo fileInfo(sFilePath);
             QString sFileXmlName = fileInfo.fileName();
          
             // XML object
             QXmlStreamReader reader;
             //Fichier XML
             QFile fFileXml(sFilePath);
          
             //open XML on red only 
             if(!fFileXml.open(QFile::ReadOnly | QFile::Text))
             {
                 QMessageBox::critical(this, tr("Open File XML"), tr("the file is not open  !"), QMessageBox::Ok);
                 return;
             }
          
             if (reader.readNextStartElement()) {
                     if (reader.name() == "Calib"){
                         while(reader.readNextStartElement()){
                             if(reader.name() == "CalibPt"){
                                 while(reader.readNextStartElement()){
                                     if(reader.name() == "calib"){
                                        QString s = reader.readElementText();
                                        ui->lineEdit_19->setText(s);
                                     }
          
                                     else if(reader.name() == "conv_"){
                                                                      QString  s = reader.readElementText();
                                                                       ui->spinBox_1->setValue(s. toInt());
                                                                    }
          
                                     else if(reader.name() == "conv_1"){
                                                                       QString s = reader.readElementText();
                                                                       ui->lineEdit->setText(s);
                                                                    }
                                      else if(reader.name() == "calib_1"){
                                                                         QString s = reader.readElementText();
                                                                         ui->lineEdit_9->setText(s);
                                                                     }
          
                                     else if(reader.name() == "conv_2"){
                                                                      QString  s = reader.readElementText();
                                                                       ui->lineEdit_2->setText(s);
                                                                    }
          
                                     else if(reader.name() == "calib_2"){
                                                                       QString s = reader.readElementText();
                                                                       ui->lineEdit_10->setText(s);
                                                                    }
                                      else if(reader.name() == "conv_3"){
                                                                         QString s = reader.readElementText();
                                                                         ui->lineEdit_3->setText(s);
                                                                     }
                                     else if(reader.name() == "calib_3"){
                                                                      QString  s = reader.readElementText();
                                                                       ui->lineEdit_11->setText(s);
                                                                    }
          
                                     else if(reader.name() == "conv_4"){
                                                                       QString s = reader.readElementText();
                                                                       ui->lineEdit_4->setText(s);
                                                                    }
                                                                    else if(reader.name() == "calib_4"){
                                                                         QString s = reader.readElementText();
                                                                         ui->lineEdit_12->setText(s);
                                                                     }
          
          
                                     else if(reader.name() == "conv_5"){
                                                                      QString  s = reader.readElementText();
                                                                       ui->lineEdit_5->setText(s);
                                                                    }
          
                                     else if(reader.name() == "calib_5"){
                                                                       QString s = reader.readElementText();
                                                                       ui->lineEdit_13->setText(s);
                                                                    }
                                                                    else if(reader.name() == "conv_6"){
                                                                         QString s = reader.readElementText();
                                                                         ui->lineEdit_6->setText(s);
                                                                     }
          
                                     else if(reader.name() == "calib_6"){
                                                                      QString  s = reader.readElementText();
                                                                       ui->lineEdit_14->setText(s);
                                                                    }
          
                                     else if(reader.name() == "conv_7"){
                                                                       QString s = reader.readElementText();
                                                                       ui->lineEdit_7->setText(s);
                                                                    }
                                                                    else if(reader.name() == "calib_7"){
                                                                         QString s = reader.readElementText();
                                                                         ui->lineEdit_15->setText(s);
                                                                     }
                                     else if(reader.name() == "conv_8"){
                                                                      QString  s = reader.readElementText();
                                                                       ui->lineEdit_8->setText(s);
                                                                    }
          
                                     else if(reader.name() == "calib_8"){
                                                                       QString s = reader.readElementText();
                                                                       ui->lineEdit_16->setText(s);
                                                                    }
          
          
                                     else
                                         reader.skipCurrentElement();
                                 }
                             }
                             else
                                 reader.skipCurrentElement();
                         }
                     }
                     else
                         reader.raiseError(QObject::tr("."));
             }
          

          I have to change the names of the subchild, otherwise it will not work.

          1 Reply Last reply
          1

          1/4

          28 Jul 2021, 09:31

          • Login

          • Login or register to search.
          1 out of 4
          • First post
            1/4
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved