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 vi...@lightningcast.com on 2003/03/25 17:54:29 UTC
help me get rid of some compile errors...
I am wasting way too much time integrating my app with the xerces parser. To add to my woes, I am facing compiler different compiler errors for different projects that use the same xerces code... :-) Can someone help me fix these errors the easy way ?
I am trying..
DOMNode *n // it is a valid domnode.
// the following statement fails. error is "2440: 'static_cast' : cannot convert from 'class xercesc_2_2::DOMNode *' to 'class xercesc_2_2::DOMElement *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast"
DOMElement *de = static_cast<DOMElement *>(n);
// this fails too, error is "C2027: use of undefined type 'DOMElement'"
DOMElement *de = reinterpret_cast<DOMElement *>(n);
>From the class diagrams, I believe that DOMNode inherits from DOMElement, and others..
So, where am I screwing up and whats the best fix ?
I have the libs and includes and straight...
-Vinayak.
> -----Original Message-----
> From: "Andreï V. FOMITCHEV" [mailto:afomitchev@odixion.com]
> Sent: Tuesday, March 25, 2003 11:04 AM
> To: xerces-c-dev@xml.apache.org
> Subject: Re: Problem with accentuated letters
>
>
> Neil Graham wrote:
>
> >Hi Andrei,
> >
> >
> >>Curiously, when I use Xerces DOMParser for parse a XML
> file, I can save
> >>it or print it with DOMWriter, the accentuated characters are quite
> >>present but if I reach the nodes, I don't have any more accents.
> >>
> >>
> >
> >Good; so the parser is evidently doing the right thing. That is, the
> >information must be available to the parser if it's capable
> of serializing
> >it correctly. So the question becomes: how are you
> "reaching" the nodes
> >and, as importantly, how are you displaying the result?
> >
> >
> //parse problem
> //it is necessary to add to what follows the management of
> the exceptions
> XercesDOMParser * parser = new XercesDOMParser;
> parser->parse(xml_file_name);
> XMLCh * tempStr [100];
> DOMDocument * document = parser->getDocument();
> XMLString::transcode("*", (XMLCh *) tempStr, 99);
> DOMNodeList * laListe = document->getElementsByTagName((const
> XMLCh*)tempStr);
> DOMNode * noeud_courant;
> for(XMLSize_t i = 0; i < laListe->getLength(); i++)
> {
> noeud_courant = laListe->item(i);
> //on ne peut pas utiliser tempStr car la taille du
> contenu peur
> être superieur à 99
> char * une_fuite_de_memoire_colmate =
> XMLString::transcode(noeud_courant->getNodeName());
> String nom_courant (une_fuite_de_memoire_colmate);
> delete [] une_fuite_de_memoire_colmate;
> String * contenu_courant = XML::getTextContent(noeud_courant);
> //I lost the contents
> }
> /*!
> return "char*" of the text content of the node node
> */
> String * XML::getTextContent(DOMNode * node)
> {
> String * res = new String("");
>
> DOMNodeList * laListe = node->getChildNodes();
> DOMNode * noeud_courant;
> for(XMLSize_t i = 0; i < laListe->getLength(); i++)
> {
> noeud_courant = laListe->item(i);
> // NodeType
> switch(/*(DOMNode::NodeType)*/noeud_courant->getNodeType())
> {
> case DOMNode::ELEMENT_NODE:
> {
> printf("ELEMENT_NODE ");
> String * tampon = getTextContent(noeud_courant);
> *res += *tampon;
> delete tampon;
> break;
> }
> case DOMNode::ATTRIBUTE_NODE:
> //pas de contenu texte ...
> break;
> case DOMNode::TEXT_NODE:
> {
> char * tampon =
> XMLString::transcode(noeud_courant->getNodeValue());
> printf("tampon = '%s'\n", tampon);
> if(tampon != NULL)
> *res += String(tampon);
> delete [] tampon;
> break;
> }
> case DOMNode::CDATA_SECTION_NODE:
> case DOMNode::ENTITY_REFERENCE_NODE:
> case DOMNode::ENTITY_NODE:
> case DOMNode::PROCESSING_INSTRUCTION_NODE:
> case DOMNode::COMMENT_NODE:
> case DOMNode::DOCUMENT_NODE:
> case DOMNode::DOCUMENT_TYPE_NODE:
> case DOMNode::DOCUMENT_FRAGMENT_NODE:
> case DOMNode::NOTATION_NODE:
> default :
> printf("oups. %d node\n", noeud_courant->getNodeType());
> break;
> }
> }
> return res;
> }
> Do I have errors in the code?
>
> --
> Andreï V. FOMITCHEV [Quand faut-il arrêter
> l'informatique]
> Software R&D Engineer [Lorsque, dans un kilo, on trouve
> 1024 grammes]
> Odixion, FRANCE
>
>
>
>
> ---------------------------------------------------------------------
> 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: help me get rid of some compile errors...
Posted by David J Craigon <da...@arabidopsis.info>.
The following code snippet should work:
#include <xercesc/dom/DOM.hpp>
using namespace xercesc;
int foo()
{
DOMNode *anode;
if (anode->getNodeType()==DOMNode::ELEMENT_NODE)
{
DOMElement *elem= (DOMElement *)anode;
}
else
{
// Oh dear
}
}
This tatic has worked for me in the past. It might very well be wrong
though- I'd love to know more.
David
vinayak@lightningcast.com wrote:
>I am wasting way too much time integrating my app with the xerces parser. To add to my woes, I am facing compiler different compiler errors for different projects that use the same xerces code... :-) Can someone help me fix these errors the easy way ?
>
>I am trying..
>
>DOMNode *n // it is a valid domnode.
>
>// the following statement fails. error is "2440: 'static_cast' : cannot convert from 'class xercesc_2_2::DOMNode *' to 'class xercesc_2_2::DOMElement *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast"
>
>DOMElement *de = static_cast<DOMElement *>(n);
>
>// this fails too, error is "C2027: use of undefined type 'DOMElement'"
>DOMElement *de = reinterpret_cast<DOMElement *>(n);
>
>>>From the class diagrams, I believe that DOMNode inherits from DOMElement, and others..
>
>So, where am I screwing up and whats the best fix ?
>
>I have the libs and includes and straight...
>
>-Vinayak.
>
>
>
>>-----Original Message-----
>>From: "Andreï V. FOMITCHEV" [mailto:afomitchev@odixion.com]
>>Sent: Tuesday, March 25, 2003 11:04 AM
>>To: xerces-c-dev@xml.apache.org
>>Subject: Re: Problem with accentuated letters
>>
>>
>>Neil Graham wrote:
>>
>>
>>
>>>Hi Andrei,
>>>
>>>
>>>
>>>
>>>>Curiously, when I use Xerces DOMParser for parse a XML
>>>>
>>>>
>>file, I can save
>>
>>
>>>>it or print it with DOMWriter, the accentuated characters are quite
>>>>present but if I reach the nodes, I don't have any more accents.
>>>>
>>>>
>>>>
>>>>
>>>Good; so the parser is evidently doing the right thing. That is, the
>>>information must be available to the parser if it's capable
>>>
>>>
>>of serializing
>>
>>
>>>it correctly. So the question becomes: how are you
>>>
>>>
>>"reaching" the nodes
>>
>>
>>>and, as importantly, how are you displaying the result?
>>>
>>>
>>>
>>>
>>//parse problem
>>//it is necessary to add to what follows the management of
>>the exceptions
>>XercesDOMParser * parser = new XercesDOMParser;
>>parser->parse(xml_file_name);
>>XMLCh * tempStr [100];
>>DOMDocument * document = parser->getDocument();
>>XMLString::transcode("*", (XMLCh *) tempStr, 99);
>>DOMNodeList * laListe = document->getElementsByTagName((const
>>XMLCh*)tempStr);
>>DOMNode * noeud_courant;
>>for(XMLSize_t i = 0; i < laListe->getLength(); i++)
>>{
>> noeud_courant = laListe->item(i);
>> //on ne peut pas utiliser tempStr car la taille du
>>contenu peur
>>être superieur à 99
>> char * une_fuite_de_memoire_colmate =
>>XMLString::transcode(noeud_courant->getNodeName());
>> String nom_courant (une_fuite_de_memoire_colmate);
>> delete [] une_fuite_de_memoire_colmate;
>> String * contenu_courant = XML::getTextContent(noeud_courant);
>> //I lost the contents
>>}
>>/*!
>> return "char*" of the text content of the node node
>>*/
>>String * XML::getTextContent(DOMNode * node)
>>{
>> String * res = new String("");
>>
>> DOMNodeList * laListe = node->getChildNodes();
>> DOMNode * noeud_courant;
>> for(XMLSize_t i = 0; i < laListe->getLength(); i++)
>> {
>> noeud_courant = laListe->item(i);
>> // NodeType
>> switch(/*(DOMNode::NodeType)*/noeud_courant->getNodeType())
>> {
>> case DOMNode::ELEMENT_NODE:
>> {
>> printf("ELEMENT_NODE ");
>> String * tampon = getTextContent(noeud_courant);
>> *res += *tampon;
>> delete tampon;
>> break;
>> }
>> case DOMNode::ATTRIBUTE_NODE:
>> //pas de contenu texte ...
>> break;
>> case DOMNode::TEXT_NODE:
>> {
>> char * tampon =
>>XMLString::transcode(noeud_courant->getNodeValue());
>> printf("tampon = '%s'\n", tampon);
>> if(tampon != NULL)
>> *res += String(tampon);
>> delete [] tampon;
>> break;
>> }
>> case DOMNode::CDATA_SECTION_NODE:
>> case DOMNode::ENTITY_REFERENCE_NODE:
>> case DOMNode::ENTITY_NODE:
>> case DOMNode::PROCESSING_INSTRUCTION_NODE:
>> case DOMNode::COMMENT_NODE:
>> case DOMNode::DOCUMENT_NODE:
>> case DOMNode::DOCUMENT_TYPE_NODE:
>> case DOMNode::DOCUMENT_FRAGMENT_NODE:
>> case DOMNode::NOTATION_NODE:
>> default :
>> printf("oups. %d node\n", noeud_courant->getNodeType());
>> break;
>> }
>> }
>> return res;
>>}
>>Do I have errors in the code?
>>
>>--
>>Andreï V. FOMITCHEV [Quand faut-il arrêter
>>l'informatique]
>>Software R&D Engineer [Lorsque, dans un kilo, on trouve
>>1024 grammes]
>>Odixion, FRANCE
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>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
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org
Re: help me get rid of some compile errors...
Posted by David J Craigon <da...@arabidopsis.info>.
The following code snippet should work:
#include <xercesc/dom/DOM.hpp>
using namespace xercesc;
int foo()
{
DOMNode *anode;
if (anode->getNodeType()==DOMNode::ELEMENT_NODE)
{
DOMElement *elem= (DOMElement *)anode;
}
else
{
// Oh dear
}
}
This tatic has worked for me in the past. It might very well be wrong
though- I'd love to know more.
David
vinayak@lightningcast.com wrote:
>I am wasting way too much time integrating my app with the xerces parser. To add to my woes, I am facing compiler different compiler errors for different projects that use the same xerces code... :-) Can someone help me fix these errors the easy way ?
>
>I am trying..
>
>DOMNode *n // it is a valid domnode.
>
>// the following statement fails. error is "2440: 'static_cast' : cannot convert from 'class xercesc_2_2::DOMNode *' to 'class xercesc_2_2::DOMElement *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast"
>
>DOMElement *de = static_cast<DOMElement *>(n);
>
>// this fails too, error is "C2027: use of undefined type 'DOMElement'"
>DOMElement *de = reinterpret_cast<DOMElement *>(n);
>
>>>From the class diagrams, I believe that DOMNode inherits from DOMElement, and others..
>
>So, where am I screwing up and whats the best fix ?
>
>I have the libs and includes and straight...
>
>-Vinayak.
>
>
>
>>-----Original Message-----
>>From: "Andreï V. FOMITCHEV" [mailto:afomitchev@odixion.com]
>>Sent: Tuesday, March 25, 2003 11:04 AM
>>To: xerces-c-dev@xml.apache.org
>>Subject: Re: Problem with accentuated letters
>>
>>
>>Neil Graham wrote:
>>
>>
>>
>>>Hi Andrei,
>>>
>>>
>>>
>>>
>>>>Curiously, when I use Xerces DOMParser for parse a XML
>>>>
>>>>
>>file, I can save
>>
>>
>>>>it or print it with DOMWriter, the accentuated characters are quite
>>>>present but if I reach the nodes, I don't have any more accents.
>>>>
>>>>
>>>>
>>>>
>>>Good; so the parser is evidently doing the right thing. That is, the
>>>information must be available to the parser if it's capable
>>>
>>>
>>of serializing
>>
>>
>>>it correctly. So the question becomes: how are you
>>>
>>>
>>"reaching" the nodes
>>
>>
>>>and, as importantly, how are you displaying the result?
>>>
>>>
>>>
>>>
>>//parse problem
>>//it is necessary to add to what follows the management of
>>the exceptions
>>XercesDOMParser * parser = new XercesDOMParser;
>>parser->parse(xml_file_name);
>>XMLCh * tempStr [100];
>>DOMDocument * document = parser->getDocument();
>>XMLString::transcode("*", (XMLCh *) tempStr, 99);
>>DOMNodeList * laListe = document->getElementsByTagName((const
>>XMLCh*)tempStr);
>>DOMNode * noeud_courant;
>>for(XMLSize_t i = 0; i < laListe->getLength(); i++)
>>{
>> noeud_courant = laListe->item(i);
>> //on ne peut pas utiliser tempStr car la taille du
>>contenu peur
>>être superieur à 99
>> char * une_fuite_de_memoire_colmate =
>>XMLString::transcode(noeud_courant->getNodeName());
>> String nom_courant (une_fuite_de_memoire_colmate);
>> delete [] une_fuite_de_memoire_colmate;
>> String * contenu_courant = XML::getTextContent(noeud_courant);
>> //I lost the contents
>>}
>>/*!
>> return "char*" of the text content of the node node
>>*/
>>String * XML::getTextContent(DOMNode * node)
>>{
>> String * res = new String("");
>>
>> DOMNodeList * laListe = node->getChildNodes();
>> DOMNode * noeud_courant;
>> for(XMLSize_t i = 0; i < laListe->getLength(); i++)
>> {
>> noeud_courant = laListe->item(i);
>> // NodeType
>> switch(/*(DOMNode::NodeType)*/noeud_courant->getNodeType())
>> {
>> case DOMNode::ELEMENT_NODE:
>> {
>> printf("ELEMENT_NODE ");
>> String * tampon = getTextContent(noeud_courant);
>> *res += *tampon;
>> delete tampon;
>> break;
>> }
>> case DOMNode::ATTRIBUTE_NODE:
>> //pas de contenu texte ...
>> break;
>> case DOMNode::TEXT_NODE:
>> {
>> char * tampon =
>>XMLString::transcode(noeud_courant->getNodeValue());
>> printf("tampon = '%s'\n", tampon);
>> if(tampon != NULL)
>> *res += String(tampon);
>> delete [] tampon;
>> break;
>> }
>> case DOMNode::CDATA_SECTION_NODE:
>> case DOMNode::ENTITY_REFERENCE_NODE:
>> case DOMNode::ENTITY_NODE:
>> case DOMNode::PROCESSING_INSTRUCTION_NODE:
>> case DOMNode::COMMENT_NODE:
>> case DOMNode::DOCUMENT_NODE:
>> case DOMNode::DOCUMENT_TYPE_NODE:
>> case DOMNode::DOCUMENT_FRAGMENT_NODE:
>> case DOMNode::NOTATION_NODE:
>> default :
>> printf("oups. %d node\n", noeud_courant->getNodeType());
>> break;
>> }
>> }
>> return res;
>>}
>>Do I have errors in the code?
>>
>>--
>>Andreï V. FOMITCHEV [Quand faut-il arrêter
>>l'informatique]
>>Software R&D Engineer [Lorsque, dans un kilo, on trouve
>>1024 grammes]
>>Odixion, FRANCE
>>
>>
>>
>>
>>---------------------------------------------------------------------
>>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
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org
Re: help me get rid of some compile errors...
Posted by David N Bertoni/Cambridge/IBM <da...@us.ibm.com>.
> I am wasting way too much time integrating my app with the
> xerces parser. To add to my woes, I am facing compiler different
> compiler errors for different projects that use the same xerces
> code... :-) Can someone help me fix these errors the easy way ?
Was it really necessary to include an entire _unrelated_ email in your
post?
DOMNode *n // it is a valid domnode.
// the following statement fails. error is "2440: 'static_cast' :
> cannot convert from 'class xercesc_2_2::DOMNode *' to 'class
> xercesc_2_2::DOMElement *' Types pointed to are unrelated;
> conversion requires reinterpret_cast, C-style cast or function-style
> cast"
>
> DOMElement *de = static_cast<DOMElement *>(n);
>
> // this fails too, error is "C2027: use of undefined type 'DOMElement'"
> DOMElement *de = reinterpret_cast<DOMElement *>(n);
Well I think that would tell you what's wrong. Did you include the header
file for DOMElement?
Dave
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org