Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. How to update a node in xml using QStreamWritter class?
Forum Updated to NodeBB v4.3 + New Features

How to update a node in xml using QStreamWritter class?

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
13 Posts 4 Posters 4.6k Views
  • 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.
  • S Sherlin N G

    hi @jsulm

    i think this will write the node again to the xml file,
    i want to change the values of existing node attributes.

    thank you for the reply

    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #4

    @Sherlin-N-G You can simply overwrite the whole XML document.

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    S 1 Reply Last reply
    0
    • jsulmJ jsulm

      @Sherlin-N-G You can simply overwrite the whole XML document.

      S Offline
      S Offline
      Sherlin N G
      wrote on last edited by
      #5

      @jsulm
      hi
      i have multiple note node inside my XML file , how can i add the set attribute value to particular node node.

      JonBJ 1 Reply Last reply
      0
      • S Sherlin N G

        @jsulm
        hi
        i have multiple note node inside my XML file , how can i add the set attribute value to particular node node.

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by
        #6

        @Sherlin-N-G
        You have to (search the document to) select the particular node you want to alter. You can sit inserting/deleting/updating nodes in an XML document for as long as you like. Then you write the complete XML document back to file when you're finished. That's the normal/simplest way of doing things in a whole XML document. Do you have a particular reason for wanting to go down to the QXmlStreamWriter level?

        K 1 Reply Last reply
        0
        • S Offline
          S Offline
          Sherlin N G
          wrote on last edited by
          #7

          hi @JonB i tried with code in the document , i am confused with these 2 line of code

          stream.writeAttribute("href", "http://qt-project.org/"); // <----- HERE
          stream.writeTextElement("title", "Qt Project");

          No, i can use any class for over writing but i feel QXmlStreamWriter is easy to implement.

          1 Reply Last reply
          0
          • JonBJ JonB

            @Sherlin-N-G
            You have to (search the document to) select the particular node you want to alter. You can sit inserting/deleting/updating nodes in an XML document for as long as you like. Then you write the complete XML document back to file when you're finished. That's the normal/simplest way of doing things in a whole XML document. Do you have a particular reason for wanting to go down to the QXmlStreamWriter level?

            K Offline
            K Offline
            kishore_hemmady
            wrote on last edited by
            #8

            @JonB Hi
            I dont think so you can read a node you want to alter and write simultaneously using DOM.

            JonBJ 1 Reply Last reply
            0
            • S Offline
              S Offline
              Sherlin N G
              wrote on last edited by
              #9

              this is my xml file in which i need to change the value of X_value from car to bus by the below code

              <Settings>
              <insideSetting>
              <note>
              <X_value>car</X_value>
              <Y_value>bike</Y_value>
              </note>
              </insideSetting>
              </Settings>

              this is my snippet to update a node attribute X_value
              void MainWindow::on_pushButton_2_clicked()
              {

                QString output("/something/newXml1.xml");
                QXmlStreamWriter stream(&output);
                stream.setAutoFormatting(true);
                stream.writeStartDocument();
                stream.writeStartElement("Note");
                stream.writeAttribute("href", "http://qt-project.org/"); // <----- HERE
                
                stream.writeTextElement("X_value", "Qt Project");
                stream.writeEndElement(); // Zone
              
               // stream.writeEndDocument();
              

              }

              please help in this.

              jsulmJ 1 Reply Last reply
              0
              • K kishore_hemmady

                @JonB Hi
                I dont think so you can read a node you want to alter and write simultaneously using DOM.

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by
                #10

                @kishore_hemmady said in How to update a node in xml using QStreamWritter class?:

                @JonB Hi
                I dont think so you can read a node you want to alter and write simultaneously using DOM.

                I meant, read the whole doc into DOM, alter, write whole DOM back. For simplicity, personally I wouldn't be doing anything at the whole QXmlStreamWriter level. That's why I was asking whether the OP is wedded to that.

                1 Reply Last reply
                0
                • S Sherlin N G

                  this is my xml file in which i need to change the value of X_value from car to bus by the below code

                  <Settings>
                  <insideSetting>
                  <note>
                  <X_value>car</X_value>
                  <Y_value>bike</Y_value>
                  </note>
                  </insideSetting>
                  </Settings>

                  this is my snippet to update a node attribute X_value
                  void MainWindow::on_pushButton_2_clicked()
                  {

                    QString output("/something/newXml1.xml");
                    QXmlStreamWriter stream(&output);
                    stream.setAutoFormatting(true);
                    stream.writeStartDocument();
                    stream.writeStartElement("Note");
                    stream.writeAttribute("href", "http://qt-project.org/"); // <----- HERE
                    
                    stream.writeTextElement("X_value", "Qt Project");
                    stream.writeEndElement(); // Zone
                  
                   // stream.writeEndDocument();
                  

                  }

                  please help in this.

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #11

                  @Sherlin-N-G You can use http://doc.qt.io/qt-5/qdomdocument.html
                  Simply read your whole document, then alter it and write it back to the file.

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    Sherlin N G
                    wrote on last edited by
                    #12

                    @jsulm

                    above code will not work for updating??
                    do i need to read from QDom and then write?

                    JonBJ 1 Reply Last reply
                    0
                    • S Sherlin N G

                      @jsulm

                      above code will not work for updating??
                      do i need to read from QDom and then write?

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #13

                      @Sherlin-N-G
                      I do think you need to confirm whether you are happy to use QDomDocument level, as I and @jsulm are suggesting, or whether you actively wish to use QXmlStreamWriter? Which is what I have been asking.

                      1 Reply Last reply
                      0

                      • Login

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