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. Reading a xml file and parsing it
Forum Updated to NodeBB v4.3 + New Features

Reading a xml file and parsing it

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 3 Posters 5.5k 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.
  • RatzzR Offline
    RatzzR Offline
    Ratzz
    wrote on last edited by Ratzz
    #2

    Hi and welcome,
    You can use isStartElement() to read the start of the tag. name() to match exact name.
    writeStartElement to start write the tag header and writeTextElementto write a text element .

    1 Reply Last reply
    1
    • A Offline
      A Offline
      Aashu10
      wrote on last edited by
      #3

      Hey!

      I do not want to write anything on the XML, I need to fetch the attribute of that tag so that I can use it for later. Can you please show me some example which is related to my case. because every where I see I get examples of XmlStreamRreader.

      RatzzR 1 Reply Last reply
      0
      • RatzzR Offline
        RatzzR Offline
        Ratzz
        wrote on last edited by
        #4
        This post is deleted!
        1 Reply Last reply
        0
        • A Aashu10

          Hey!

          I do not want to write anything on the XML, I need to fetch the attribute of that tag so that I can use it for later. Can you please show me some example which is related to my case. because every where I see I get examples of XmlStreamRreader.

          RatzzR Offline
          RatzzR Offline
          Ratzz
          wrote on last edited by Ratzz
          #5

          @Aashu10
          You can read this way.

          qxmlstreamreader *xmlreader;
          
          while(!xmlreader->atEnd())
             {
                 if(xmlreader->isStartElement())
                 {
                     if(xmlreader->name()== "MAIN_HEADER")
                     {
                         xmlreader->readnext();
                     }
             		else  if(xmlreader->name() == "HEADER")
             		{
                       while(!xmlreader->atEnd())
                         {
                            if(xmlreader->isendelement())
                             {
                               if(xmlreader->name() == "HEADER")
                                {
                                  xmlreader->readNext();
                                  break;
                                 }
                                 xmlreader->readNext();
                             }
                            else if(xmlreader->isCharacters())
                             {
                                xmlreader->readnext();
                             }
                            else if(xmlreader->isStartElement())
                             {
                               if(xmlreader->name() == "TITLE")
                                 {            
                                   xmlreader->readNext();
                                 }
                                else if(xmlreader->name() == "AUTHOR")
                                {
                                 xmlreader->readNext();
                                }
                                else if(xmlreader->name() == "NAME")
             		           {
             		            qstring name=xmlReader->readElementText()) ;// found
             		           }
             		          .................
             		
                             else
                             {
                               xmlreader->readNext();
                             }
             			}
             	
                 else if(xmlreader->isEndElement())
                 {
                     if(xmlreader->name() == "MAIN_HEADER")
                     {
                         break;
                     }
                     xmlreader->readNext();
                 }
                 else
                 {
                     xmlreader->readnext();
                 }
             }
          
          }		
          
          
          1 Reply Last reply
          1
          • A Offline
            A Offline
            Aashu10
            wrote on last edited by
            #6

            So i do not have to consider the main tag? <MAIN_HEADER>

            RatzzR 1 Reply Last reply
            0
            • A Aashu10

              So i do not have to consider the main tag? <MAIN_HEADER>

              RatzzR Offline
              RatzzR Offline
              Ratzz
              wrote on last edited by
              #7

              @Aashu10
              I have EDITed the previous post.

              1 Reply Last reply
              1
              • A Offline
                A Offline
                Aashu10
                wrote on last edited by
                #8

                I am very new to Xmlstreamreader, Please bear with me
                I am getting a error as " C2039: 'readnext' : is not a member of 'QXmlStreamReader'

                RatzzR 1 Reply Last reply
                0
                • A Aashu10

                  I am very new to Xmlstreamreader, Please bear with me
                  I am getting a error as " C2039: 'readnext' : is not a member of 'QXmlStreamReader'

                  RatzzR Offline
                  RatzzR Offline
                  Ratzz
                  wrote on last edited by
                  #9

                  @Aashu10
                  I edited the code in the text editor. So be careful with the spelling.

                  xmlReader->readNext();
                  
                  1 Reply Last reply
                  1
                  • A Offline
                    A Offline
                    Aashu10
                    wrote on last edited by Aashu10
                    #10

                    Ah there's sytax error, trying real hard to find it out. I'm getting:
                    " error: C2181: illegal else without matching if"
                    on line:
                    else if(xmlreader.isEndElement()). any idea why?

                    RatzzR 1 Reply Last reply
                    0
                    • jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #11

                      Probably } before else if(xmlreader.isEndElement()) is missing

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

                      1 Reply Last reply
                      0
                      • A Aashu10

                        Ah there's sytax error, trying real hard to find it out. I'm getting:
                        " error: C2181: illegal else without matching if"
                        on line:
                        else if(xmlreader.isEndElement()). any idea why?

                        RatzzR Offline
                        RatzzR Offline
                        Ratzz
                        wrote on last edited by
                        #12

                        @Aashu10
                        We cannot just say if the tag is read or not. it requires careful observations.
                        Best way is to right the read tags back to .xml file to check if it really read or not .

                        1 Reply Last reply
                        1
                        • A Offline
                          A Offline
                          Aashu10
                          wrote on last edited by
                          #13

                          @Ratzz

                          Thanks a ton! i think i am near to solving the problem, i have edited the program. You can see what exactly i am doing. I choosing a xml file from a dropdown. and QT parse that XML file. Now when i choose an xml file. Whole program gets stuck.

                          RatzzR 1 Reply Last reply
                          0
                          • A Aashu10

                            @Ratzz

                            Thanks a ton! i think i am near to solving the problem, i have edited the program. You can see what exactly i am doing. I choosing a xml file from a dropdown. and QT parse that XML file. Now when i choose an xml file. Whole program gets stuck.

                            RatzzR Offline
                            RatzzR Offline
                            Ratzz
                            wrote on last edited by Ratzz
                            #14

                            @Aashu10
                            I have written a test code which works fine for me . Its here .or from here .

                            1 Reply Last reply
                            1
                            • A Offline
                              A Offline
                              Aashu10
                              wrote on last edited by Aashu10
                              #15

                              Thanks alot! still can't figure out why does my gui hangs.
                              Can you please tell me what does String holds in:
                              "QString name=xmlreader.readElementText(); // found"

                              I had a debug there to check, unfortunately my gui is hanging

                              RatzzR 1 Reply Last reply
                              0
                              • A Aashu10

                                Thanks alot! still can't figure out why does my gui hangs.
                                Can you please tell me what does String holds in:
                                "QString name=xmlreader.readElementText(); // found"

                                I had a debug there to check, unfortunately my gui is hanging

                                RatzzR Offline
                                RatzzR Offline
                                Ratzz
                                wrote on last edited by Ratzz
                                #16

                                Did you try the test code?
                                QString name holds the name john
                                Download this zip file. Build your project and browse for the XML.xml file to find the matched name .

                                1 Reply Last reply
                                1
                                • A Offline
                                  A Offline
                                  Aashu10
                                  wrote on last edited by
                                  #17

                                  Thanks for the help! this works too! But i think DOM is turning out to be simpler, i really appriciate your help. don't exactly know how to accept your answer on this forum.

                                  RatzzR 1 Reply Last reply
                                  0
                                  • A Aashu10

                                    Thanks for the help! this works too! But i think DOM is turning out to be simpler, i really appriciate your help. don't exactly know how to accept your answer on this forum.

                                    RatzzR Offline
                                    RatzzR Offline
                                    Ratzz
                                    wrote on last edited by Ratzz
                                    #18

                                    @Aashu10
                                    There is nothing like "answer" for particular question . You can Upvote the answer(s) that helped you to solve the issue.
                                    Once your problem is solved please use the Topic Tools button to mark as Solved.
                                    Thank you!

                                    1 Reply Last reply
                                    1

                                    • Login

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