You need a zero to terminate the string - element[f]=0; Allocate an extra
byte for it too. 

>-----Original Message-----
>From: Andre Stock [mailto:[EMAIL PROTECTED] 
>Sent: 16 June 2004 10:54
>To: [EMAIL PROTECTED]
>Subject: RE: Newbie Problems with Simple SAXParser
>
>When i get an event that an element was found, i take the 
>localname in my startElement method and try to put it in a 
>char array, like (don`t laugh, i`m new to c++!):
>int f = XERCES_CPP_NAMESPACE::XMLString::stringLen(localname);
>       char *element = (char *)malloc ( f * sizeof(char));
>       for (int i = 0; i < f;i++)
>       {
>               
>               element[i] = (char) localname [i];
>       }
>        std::cout << "Found element..." << element << "\n";
>       free(element);
>When i run my application i get the name of my element, but 
>there are padding characters behind the actually elementname. 
>Is that due to a different encoding? (XMLCh*?) Is there a 
>method i have to call, which creates a string from the localname?
>Thanks 
>
>Andre
>
>> It was actually the namespace missing in the signature of 
>> startElement().I thought if Attributes.hpp is included and the 
>> namespace was declared in my application it should work! OK, 
>now i know better!
>> Thank you very much indeed!!!!!
>> Andre
>> 
>> > Actually, Attributes.hpp should be included via 
>XMLReaderFactory.hpp. 
>> > Alby's on to the problem, though: the Attributes type is 
>not known.  
>> > I
>> suspect
>> > this is a namespace issue.  Try 
>XERCES_CPP_NAMESPACE::Attributes (or 
>> > uncommenting "using namespace XERCES_CPP_NAMESPACE;", since your 
>> > code is building on Xerces).
>> > 
>> > -----Original Message-----
>> > From: Andre Stock [mailto:[EMAIL PROTECTED]
>> > Sent: Tuesday, June 15, 2004 10:18 AM
>> > To: [EMAIL PROTECTED]
>> > 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: 
>> > > [EMAIL PROTECTED]
>> > > For additional commands, e-mail: [EMAIL PROTECTED]
>> > > 
>> > 
>> > --
>> > +++ 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: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> > 
>> > 
>> > 
>--------------------------------------------------------------------
>> > - To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> > 
>> 
>> --
>> +++ 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: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>
>--
>"Sie haben neue Mails!" - Die GMX Toolbar informiert Sie beim Surfen!
>Jetzt aktivieren unter http://www.gmx.net/info
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to