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. trying to use QXmlParser and friends
Forum Updated to NodeBB v4.3 + New Features

trying to use QXmlParser and friends

Scheduled Pinned Locked Moved Unsolved General and Desktop
18 Posts 3 Posters 1.3k Views 3 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.
  • M Offline
    M Offline
    mzimmers
    wrote on 16 Apr 2020, 22:06 last edited by
    #8

    Well, I shouldn't have declared victory so quickly. When I migrated my test code into my app, I got this error:

    C:\wifibutton\utility\xmlparser.h:16: error: 'XmlHandler' does not name a type; did you mean 'XmlParser'?
         XmlHandler m_handler;
         ^~~~~~~~~~
         XmlParser
    

    Here are some snippets:

    class XmlHandler : public QXmlDefaultHandler
    {
    private:
        MsgHash m_hash;
    public:
        XmlHandler();
    ...
    }
    
    #include "xmlhandler.h"
    
    class XmlParser
    {
        QXmlSimpleReader m_reader;
        XmlHandler m_handler;
       ...
    }
    

    Is there something special I need to know about sub-classing QXmlDefaultHandler, or am I just brain-fading here?

    Thanks...

    M 1 Reply Last reply 16 Apr 2020, 22:11
    0
    • M mzimmers
      16 Apr 2020, 22:06

      Well, I shouldn't have declared victory so quickly. When I migrated my test code into my app, I got this error:

      C:\wifibutton\utility\xmlparser.h:16: error: 'XmlHandler' does not name a type; did you mean 'XmlParser'?
           XmlHandler m_handler;
           ^~~~~~~~~~
           XmlParser
      

      Here are some snippets:

      class XmlHandler : public QXmlDefaultHandler
      {
      private:
          MsgHash m_hash;
      public:
          XmlHandler();
      ...
      }
      
      #include "xmlhandler.h"
      
      class XmlParser
      {
          QXmlSimpleReader m_reader;
          XmlHandler m_handler;
         ...
      }
      

      Is there something special I need to know about sub-classing QXmlDefaultHandler, or am I just brain-fading here?

      Thanks...

      M Offline
      M Offline
      mrjj
      Lifetime Qt Champion
      wrote on 16 Apr 2020, 22:11 last edited by
      #9

      @mzimmers
      Just to be sure its not that.
      Does xmlparser.h include XmlHandler.h and reverse ?
      (circular include)

      M 1 Reply Last reply 16 Apr 2020, 22:15
      0
      • M mrjj
        16 Apr 2020, 22:11

        @mzimmers
        Just to be sure its not that.
        Does xmlparser.h include XmlHandler.h and reverse ?
        (circular include)

        M Offline
        M Offline
        mzimmers
        wrote on 16 Apr 2020, 22:15 last edited by
        #10

        @mrjj no. xmlparser.h includes xmlhandler.h, but not the other way around.

        M 1 Reply Last reply 16 Apr 2020, 22:17
        0
        • M mzimmers
          16 Apr 2020, 22:15

          @mrjj no. xmlparser.h includes xmlhandler.h, but not the other way around.

          M Offline
          M Offline
          mrjj
          Lifetime Qt Champion
          wrote on 16 Apr 2020, 22:17 last edited by
          #11

          @mzimmers
          Ok, just had to be sure :)

          It simply says it don't know type so it don't see the include for some reason.

          Did you try clean all, rebuild ?

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mzimmers
            wrote on 16 Apr 2020, 22:21 last edited by
            #12

            Yes, I did.

            Here's the complete code from the headers:

            xmlhandler.h

            #ifndef XMLHANDLER_H
            #define XMLHANDLER_H
            
            
            #include <QXmlDefaultHandler>
            
            #include "message.h"
            
            using namespace std;
            
            class XmlHandler : public QXmlDefaultHandler
            {
            private:
                MsgHash m_hash;
                bool m_tagStarted = false;
                QString m_tag;
                QString m_data;
                QXmlInputSource *m_source;
            
            public:
                XmlHandler();
                ~XmlHandler();
                bool startElement(const QString &uri,
                                  const QString &local,
                                  const QString &name,
                                  const QXmlAttributes &atts) override;
                bool endElement(const QString &uri,
                                  const QString &local,
                                  const QString &name) override;
                bool characters(const QString &ch) override;
                void getHash(MsgHash &msgHash) {msgHash = m_hash;}
            };
            
            
            #endif // XMLHANDLER_H
            

            xmlparser.h:

            #ifndef XMLPARSER_H
            #define XMLPARSER_H
            
            #include <stdint.h>
            
            #include <QXmlDefaultHandler>
            #include <QXmlSimpleReader>
            
            #include "constants.h"
            #include "message.h"
            #include "xmlhandler.h"
            
            class XmlParser
            {
                QXmlSimpleReader m_reader;
                XmlHandler m_handler;
            public:
                XmlParser();
                ~XmlParser();
                int process(string xml, MsgHash &msgHash);
            };
            
            #endif // XMLPARSER_H
            
            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 16 Apr 2020, 22:24 last edited by
              #13

              Hi
              It looks ok.
              Could you try add some dummy class to the xmlhandler.h

              class Test {
              };

              and see if it can see that symbol ?

              just to test it dont see the include and not something with class XmlHandler

              M 1 Reply Last reply 16 Apr 2020, 22:27
              0
              • M mrjj
                16 Apr 2020, 22:24

                Hi
                It looks ok.
                Could you try add some dummy class to the xmlhandler.h

                class Test {
                };

                and see if it can see that symbol ?

                just to test it dont see the include and not something with class XmlHandler

                M Offline
                M Offline
                mzimmers
                wrote on 16 Apr 2020, 22:27 last edited by mzimmers
                #14

                @mrjj good test -- it didn't see that either. I wonder if XMLHANDLER_H is a reserved term...?

                ANSWER: no it isn't...

                M 1 Reply Last reply 16 Apr 2020, 22:36
                0
                • M mzimmers
                  16 Apr 2020, 22:27

                  @mrjj good test -- it didn't see that either. I wonder if XMLHANDLER_H is a reserved term...?

                  ANSWER: no it isn't...

                  M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 16 Apr 2020, 22:36 last edited by
                  #15

                  @mzimmers

                  Hmm can you check your .pro file its not listed 2 times ?

                  Also
                  can you please inspect both files
                  with Include Hierarchy?

                  alt text
                  The last.

                  and see if you see anything odd.

                  M 2 Replies Last reply 16 Apr 2020, 22:45
                  1
                  • M mrjj
                    16 Apr 2020, 22:36

                    @mzimmers

                    Hmm can you check your .pro file its not listed 2 times ?

                    Also
                    can you please inspect both files
                    with Include Hierarchy?

                    alt text
                    The last.

                    and see if you see anything odd.

                    M Offline
                    M Offline
                    mzimmers
                    wrote on 16 Apr 2020, 22:45 last edited by
                    #16

                    @mrjj that wasn't it exactly, but you put me on the right track. I'll report back in a bit.

                    Thanks...

                    1 Reply Last reply
                    0
                    • M mrjj
                      16 Apr 2020, 22:36

                      @mzimmers

                      Hmm can you check your .pro file its not listed 2 times ?

                      Also
                      can you please inspect both files
                      with Include Hierarchy?

                      alt text
                      The last.

                      and see if you see anything odd.

                      M Offline
                      M Offline
                      mzimmers
                      wrote on 16 Apr 2020, 22:59 last edited by
                      #17

                      @mrjj great suggestion there! Long story short, I had a cyclic dependency. Thanks for your help on this.

                      1 Reply Last reply
                      1
                      • M Offline
                        M Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on 16 Apr 2020, 23:03 last edited by
                        #18

                        Super :)
                        Well it's my number one suspect when it says "don't know symbol"
                        and you check you have the header included and all seem fine.

                        1 Reply Last reply
                        0

                        17/18

                        16 Apr 2020, 22:59

                        • Login

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