You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by Alberto Massari <am...@progress.com> on 2004/06/15 14:05:47 UTC

Re: Newbie Problems with Simple SAXParser

Hi Andre,
you are missing a

#include <xercesc/sax2/Attributes.hpp>

in the CHandler.hpp file.

Alberto

At 13.43 15/06/2004 +0200, Andre Stock wrote:
>Ok, you`re right i`m new to c++. But anyway i want to try to write it on my
>own (or better with your help! ;-))
>
>That`s the CXercesTest.cpp file:
>
>#include "stdafx.h"
>#include "CXercesTest.h"
>#include "CHandler.hpp"
>#include <xercesc/util/PlatformUtils.hpp>
>#include <xercesc/sax2/SAX2XMLReader.hpp>
>#include <xercesc/sax2/XMLReaderFactory.hpp>
>#include <xercesc/sax2/DefaultHandler.hpp>
>
>
>using namespace XERCES_CPP_NAMESPACE;
>//using namespace std;
>
>//##ModelId=40C56B8B02DE
>void CXercesTest::createXMLStream()
>{
>
>}
>
>//##ModelId=40C56BC8003E
>int CXercesTest::parseDocument()
>{
>         try {
>             XMLPlatformUtils::Initialize();
>         }
>         catch (const XMLException& toCatch) {
>             char* message = XMLString::transcode(toCatch.getMessage());
>                         std::cout << "Error during initialization! :\n";
>                         std::cout << "Exception message is: \n"
>                  << message << "\n";
>             XMLString::release(&message);
>             return 1;
>         }
>
>         SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
>
>
>         CHandler* defaultHandler = new CHandler();
>         //DefaultHandler* defaultHandler = new DefaultHandler();
>         parser->setContentHandler(defaultHandler);
>         parser->setErrorHandler(defaultHandler);
>         try {
>                 parser->parse("c:\\xmlFile.xml");
>         }
>         catch (const XMLException& toCatch) {
>             char* message = XMLString::transcode(toCatch.getMessage());
>                         std::cout << "Exception message is: \n"
>                  << message << "\n";
>             XMLString::release(&message);
>             return -1;
>         }
>         catch (const SAXParseException& toCatch) {
>             char* message = XMLString::transcode(toCatch.getMessage());
>                         std::cout << "Exception message is: \n"
>                  << message << "\n";
>             XMLString::release(&message);
>             return -1;
>         }
>         catch (...) {
>                         std::cout << "Unexpected Exception \n" ;
>             return -1;
>         }
>
>}
>
>//##ModelId=40C56F5C0196
>CXercesTest::CXercesTest()
>{
>         this->createXMLStream();
>         this->parseDocument();
>}
>
>I also created a file which inherits from DefaultHandler.hpp which is called
>CHandler.hpp:
>
>#include <xercesc/sax/SAXParseException.hpp>
>#include <xercesc/sax2/DefaultHandler.hpp>
>#include <iostream>
>
>
>class CHandler : public XERCES_CPP_NAMESPACE::DefaultHandler
>{
>public:
>                 CHandler();
>                 ~CHandler();
>                 void startDocument();
>                 void startElement (
>         const   XMLCh* const    uri,
>         const   XMLCh* const    localname,
>         const   XMLCh* const    qname,
>                 const Attributes&       attrs
>     );
>
>
>};
>
>and CHandler.cpp:
>#include <xercesc/util/XercesDefs.hpp>
>#include <xercesc/util/XMLString.hpp>
>#include "CHandler.hpp"
>
>//using namespace XERCES_CPP_NAMESPACE;
>
>
>void CHandler::startDocument()
>{
>         std::cout<< "Parsing in progress...!";
>}
>
>void CHandler::startElement(
>         const   XMLCh* const    uri,
>         const   XMLCh* const    localname,
>         const   XMLCh* const    qname,
>                 const Attributes&       attrs
>     )
>{
>         std::cout << "Found element...";
>}
>
>CHandler::CHandler()
>{
>}
>CHandler::~CHandler()
>{
>}
>
>and there is the problem, the compiler says "missing ',' before '&' in the
>CHandler.hpp and CHandler.cpp file.
>Just for the sake of completeness there is another class calling the
>CXercesTest constructor.
>I`m sorry bothering you, but i have to get it working as fast as possible...
>when it`s to hard for me i`ll try the version with taking SAXPrint and
>modify it!
>Thanks in advance!
>Andre
>
>--
>"Sie haben neue Mails!" - Die GMX Toolbar informiert Sie beim Surfen!
>Jetzt aktivieren unter http://www.gmx.net/info



---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org


RE: Newbie Problems with Simple SAXParser

Posted by Tony Dodd <to...@btinternet.com>.
You need to include the header file that defines Attributes, directly or
indirectly.

Tony Dodd
Oxford University Research Technology Group 

>-----Original Message-----
>From: Andre Stock [mailto:Mr.doom@gmx.de] 
>Sent: 15 June 2004 15:18
>To: xerces-c-dev@xml.apache.org
>Subject: Re: Newbie Problems with Simple SAXParser
>
>Hi,
>I just took the startElement method from SAX2Count and copied 
>it to my .hpp (the definition) and my .cpp file (declaration). 
>I did the same for the characters method from SAX2Count. When 
>i compile my project, the compiler says that there is a ',' 
>missing before '&'(in my .hpp and my .cpp file!).
>How can that be? I copied both methods and chracters() is 
>working fine, while startElement(...) isn`t working!
>
>void CHandler::startElement(const XMLCh* const uri
>                                   , const XMLCh* const localname
>                                   , const XMLCh* const qname
>                                   , const Attributes& attrs) {
>    std:cout << "Found element...";
>}
>
>
>Has anyone a sample code fragment for startElement?
>Thanks
>Andre
>
>> Hi Andre,
>> you are missing a
>> 
>> #include <xercesc/sax2/Attributes.hpp>
>> 
>> in the CHandler.hpp file.
>> 
>> Alberto
>> 
>> At 13.43 15/06/2004 +0200, Andre Stock wrote:
>> >Ok, you`re right i`m new to c++. But anyway i want to try 
>to write it 
>> >on
>> my
>> >own (or better with your help! ;-))
>> >
>> >That`s the CXercesTest.cpp file:
>> >
>> >#include "stdafx.h"
>> >#include "CXercesTest.h"
>> >#include "CHandler.hpp"
>> >#include <xercesc/util/PlatformUtils.hpp> #include 
>> ><xercesc/sax2/SAX2XMLReader.hpp> #include 
>> ><xercesc/sax2/XMLReaderFactory.hpp>
>> >#include <xercesc/sax2/DefaultHandler.hpp>
>> >
>> >
>> >using namespace XERCES_CPP_NAMESPACE; //using namespace std;
>> >
>> >//##ModelId=40C56B8B02DE
>> >void CXercesTest::createXMLStream()
>> >{
>> >
>> >}
>> >
>> >//##ModelId=40C56BC8003E
>> >int CXercesTest::parseDocument()
>> >{
>> >         try {
>> >             XMLPlatformUtils::Initialize();
>> >         }
>> >         catch (const XMLException& toCatch) {
>> >             char* message = 
>XMLString::transcode(toCatch.getMessage());
>> >                         std::cout << "Error during 
>initialization! :\n";
>> >                         std::cout << "Exception message is: \n"
>> >                  << message << "\n";
>> >             XMLString::release(&message);
>> >             return 1;
>> >         }
>> >
>> >         SAX2XMLReader* parser = 
>XMLReaderFactory::createXMLReader();
>> >
>> >
>> >         CHandler* defaultHandler = new CHandler();
>> >         //DefaultHandler* defaultHandler = new DefaultHandler();
>> >         parser->setContentHandler(defaultHandler);
>> >         parser->setErrorHandler(defaultHandler);
>> >         try {
>> >                 parser->parse("c:\\xmlFile.xml");
>> >         }
>> >         catch (const XMLException& toCatch) {
>> >             char* message = 
>XMLString::transcode(toCatch.getMessage());
>> >                         std::cout << "Exception message is: \n"
>> >                  << message << "\n";
>> >             XMLString::release(&message);
>> >             return -1;
>> >         }
>> >         catch (const SAXParseException& toCatch) {
>> >             char* message = 
>XMLString::transcode(toCatch.getMessage());
>> >                         std::cout << "Exception message is: \n"
>> >                  << message << "\n";
>> >             XMLString::release(&message);
>> >             return -1;
>> >         }
>> >         catch (...) {
>> >                         std::cout << "Unexpected Exception \n" ;
>> >             return -1;
>> >         }
>> >
>> >}
>> >
>> >//##ModelId=40C56F5C0196
>> >CXercesTest::CXercesTest()
>> >{
>> >         this->createXMLStream();
>> >         this->parseDocument();
>> >}
>> >
>> >I also created a file which inherits from 
>DefaultHandler.hpp which is
>> called
>> >CHandler.hpp:
>> >
>> >#include <xercesc/sax/SAXParseException.hpp>
>> >#include <xercesc/sax2/DefaultHandler.hpp> #include <iostream>
>> >
>> >
>> >class CHandler : public XERCES_CPP_NAMESPACE::DefaultHandler
>> >{
>> >public:
>> >                 CHandler();
>> >                 ~CHandler();
>> >                 void startDocument();
>> >                 void startElement (
>> >         const   XMLCh* const    uri,
>> >         const   XMLCh* const    localname,
>> >         const   XMLCh* const    qname,
>> >                 const Attributes&       attrs
>> >     );
>> >
>> >
>> >};
>> >
>> >and CHandler.cpp:
>> >#include <xercesc/util/XercesDefs.hpp> #include 
>> ><xercesc/util/XMLString.hpp> #include "CHandler.hpp"
>> >
>> >//using namespace XERCES_CPP_NAMESPACE;
>> >
>> >
>> >void CHandler::startDocument()
>> >{
>> >         std::cout<< "Parsing in progress...!"; }
>> >
>> >void CHandler::startElement(
>> >         const   XMLCh* const    uri,
>> >         const   XMLCh* const    localname,
>> >         const   XMLCh* const    qname,
>> >                 const Attributes&       attrs
>> >     )
>> >{
>> >         std::cout << "Found element..."; }
>> >
>> >CHandler::CHandler()
>> >{
>> >}
>> >CHandler::~CHandler()
>> >{
>> >}
>> >
>> >and there is the problem, the compiler says "missing ',' before '&' 
>> >in
>> the
>> >CHandler.hpp and CHandler.cpp file.
>> >Just for the sake of completeness there is another class 
>calling the 
>> >CXercesTest constructor.
>> >I`m sorry bothering you, but i have to get it working as fast as
>> possible...
>> >when it`s to hard for me i`ll try the version with taking SAXPrint 
>> >and modify it!
>> >Thanks in advance!
>> >Andre
>> >
>> >--
>> >"Sie haben neue Mails!" - Die GMX Toolbar informiert Sie 
>beim Surfen!
>> >Jetzt aktivieren unter http://www.gmx.net/info
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
>> For additional commands, e-mail: xerces-c-dev-help@xml.apache.org
>> 
>
>-- 
>+++ Jetzt WLAN-Router f|r alle DSL-Einsteiger und Wechsler +++
>GMX DSL-Powertarife zudem 3 Monate gratis* http://www.gmx.net/dsl
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
>For additional commands, e-mail: xerces-c-dev-help@xml.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org


Re: Newbie Problems with Simple SAXParser

Posted by Andre Stock <Mr...@gmx.de>.
Hi,
I just took the startElement method from SAX2Count and copied it to my .hpp
(the definition) and my .cpp file (declaration). I did the same for the
characters method from SAX2Count. When i compile my project, the compiler
says that there is a ',' missing before '&'(in my .hpp and my .cpp file!).
How can that be? I copied both methods and chracters() is working fine,
while startElement(...) isn`t working!

void CHandler::startElement(const XMLCh* const uri
                                   , const XMLCh* const localname
                                   , const XMLCh* const qname
                                   , const Attributes& attrs)
{
    std:cout << "Found element...";
}


Has anyone a sample code fragment for startElement?
Thanks
Andre

> Hi Andre,
> you are missing a
> 
> #include <xercesc/sax2/Attributes.hpp>
> 
> in the CHandler.hpp file.
> 
> Alberto
> 
> At 13.43 15/06/2004 +0200, Andre Stock wrote:
> >Ok, you`re right i`m new to c++. But anyway i want to try to write it on
> my
> >own (or better with your help! ;-))
> >
> >That`s the CXercesTest.cpp file:
> >
> >#include "stdafx.h"
> >#include "CXercesTest.h"
> >#include "CHandler.hpp"
> >#include <xercesc/util/PlatformUtils.hpp>
> >#include <xercesc/sax2/SAX2XMLReader.hpp>
> >#include <xercesc/sax2/XMLReaderFactory.hpp>
> >#include <xercesc/sax2/DefaultHandler.hpp>
> >
> >
> >using namespace XERCES_CPP_NAMESPACE;
> >//using namespace std;
> >
> >//##ModelId=40C56B8B02DE
> >void CXercesTest::createXMLStream()
> >{
> >
> >}
> >
> >//##ModelId=40C56BC8003E
> >int CXercesTest::parseDocument()
> >{
> >         try {
> >             XMLPlatformUtils::Initialize();
> >         }
> >         catch (const XMLException& toCatch) {
> >             char* message = XMLString::transcode(toCatch.getMessage());
> >                         std::cout << "Error during initialization! :\n";
> >                         std::cout << "Exception message is: \n"
> >                  << message << "\n";
> >             XMLString::release(&message);
> >             return 1;
> >         }
> >
> >         SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
> >
> >
> >         CHandler* defaultHandler = new CHandler();
> >         //DefaultHandler* defaultHandler = new DefaultHandler();
> >         parser->setContentHandler(defaultHandler);
> >         parser->setErrorHandler(defaultHandler);
> >         try {
> >                 parser->parse("c:\\xmlFile.xml");
> >         }
> >         catch (const XMLException& toCatch) {
> >             char* message = XMLString::transcode(toCatch.getMessage());
> >                         std::cout << "Exception message is: \n"
> >                  << message << "\n";
> >             XMLString::release(&message);
> >             return -1;
> >         }
> >         catch (const SAXParseException& toCatch) {
> >             char* message = XMLString::transcode(toCatch.getMessage());
> >                         std::cout << "Exception message is: \n"
> >                  << message << "\n";
> >             XMLString::release(&message);
> >             return -1;
> >         }
> >         catch (...) {
> >                         std::cout << "Unexpected Exception \n" ;
> >             return -1;
> >         }
> >
> >}
> >
> >//##ModelId=40C56F5C0196
> >CXercesTest::CXercesTest()
> >{
> >         this->createXMLStream();
> >         this->parseDocument();
> >}
> >
> >I also created a file which inherits from DefaultHandler.hpp which is
> called
> >CHandler.hpp:
> >
> >#include <xercesc/sax/SAXParseException.hpp>
> >#include <xercesc/sax2/DefaultHandler.hpp>
> >#include <iostream>
> >
> >
> >class CHandler : public XERCES_CPP_NAMESPACE::DefaultHandler
> >{
> >public:
> >                 CHandler();
> >                 ~CHandler();
> >                 void startDocument();
> >                 void startElement (
> >         const   XMLCh* const    uri,
> >         const   XMLCh* const    localname,
> >         const   XMLCh* const    qname,
> >                 const Attributes&       attrs
> >     );
> >
> >
> >};
> >
> >and CHandler.cpp:
> >#include <xercesc/util/XercesDefs.hpp>
> >#include <xercesc/util/XMLString.hpp>
> >#include "CHandler.hpp"
> >
> >//using namespace XERCES_CPP_NAMESPACE;
> >
> >
> >void CHandler::startDocument()
> >{
> >         std::cout<< "Parsing in progress...!";
> >}
> >
> >void CHandler::startElement(
> >         const   XMLCh* const    uri,
> >         const   XMLCh* const    localname,
> >         const   XMLCh* const    qname,
> >                 const Attributes&       attrs
> >     )
> >{
> >         std::cout << "Found element...";
> >}
> >
> >CHandler::CHandler()
> >{
> >}
> >CHandler::~CHandler()
> >{
> >}
> >
> >and there is the problem, the compiler says "missing ',' before '&' in
> the
> >CHandler.hpp and CHandler.cpp file.
> >Just for the sake of completeness there is another class calling the
> >CXercesTest constructor.
> >I`m sorry bothering you, but i have to get it working as fast as
> possible...
> >when it`s to hard for me i`ll try the version with taking SAXPrint and
> >modify it!
> >Thanks in advance!
> >Andre
> >
> >--
> >"Sie haben neue Mails!" - Die GMX Toolbar informiert Sie beim Surfen!
> >Jetzt aktivieren unter http://www.gmx.net/info
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: xerces-c-dev-help@xml.apache.org
> 

-- 
+++ Jetzt WLAN-Router f�r alle DSL-Einsteiger und Wechsler +++
GMX DSL-Powertarife zudem 3 Monate gratis* http://www.gmx.net/dsl


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org