You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xerces.apache.org by Sanat Talmaki <sa...@gmail.com> on 2010/02/02 05:48:38 UTC

help using getNodeType and getNodeName

Hello,
I am having trouble understanding the getNodeName and getNodeType functions.
I am trying a simple program just to understand the basics of xerces. My
code is below. I parse the xml doc and then call a function NodeDetails.
When I run it, I dont get the output I expected.
I have pasted below the xml file, the code and the output I am
getting........
If you can guide me a little, I would be very grateful.

Thank You

Sanat.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The XML file I am using is:
<?xml version="1.0" encoding="utf-8"?>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>
      An in-depth look at creating applications
      with XML.
    </description>
  </book>......................

-----------------------------------------------------------------------------------------
skeleton code is below:


DOMDocument* document = parser->getDocument();

NodeDetails(document);

void NodeDetails(DOMNode* node)
    {
      cout << "Node Type: "
           << node->getNodeType()
           << endl
           << "Node Name: "
           << (node->getNodeName())
           << endl;
      if(node->hasChildNodes())
      {
        cout << "Child Node Type: "
             << node->getFirstChild()->getNodeType()
             << endl
             << "Node Name: "
             << (node->getFirstChild()->getNodeName())
             << endl;
      }
-----------------------------------------------------------------------------------------------------------------------------------
Output:

Node Type: 9
Node Name: 1227DEAC
Child Node Type: 1
Node Name: 008DB2D4

Re: help using getNodeType and getNodeName

Posted by Sanat Talmaki <sa...@gmail.com>.
Hi Frank,

Thanks for the tip...I'll keep plugging away. I am starting to think that if
I put in a fair number of hours into this, I'll get good at it and be
comfortable with it eventually <finger's crossed>

Regards,

Sanat.

On Tue, Feb 2, 2010 at 11:27 AM, Gierschner, Frank <
Frank.Gierschner@realtech.com> wrote:

> Hi Sanat.
>
> To get a glimpse of understanding I guess (debugging) through the
> samples is the best thing to do first.
> Later on you can also consult the API documentation or can of course
> query the archives.
> I recognized that most of the questions posted here come over and over
> again, so the possibility that you find one or more hints in the
> archives (but maybe not the direct answer) has a propability of nearly
> 1.
>
> Regards
>  Frank
>
> > -----Original Message-----
> > From: Sanat Talmaki [mailto:sanat.schumi@gmail.com]
> > Sent: Dienstag, 2. Februar 2010 16:53
> > To: c-users@xerces.apache.org
> > Subject: Re: help using getNodeType and getNodeName
> >
> > Hi Frank, Kun...
> >
> > I tried that code. It worked. Thanks so much.
> > In general, is the mail archives a good place to look for
> > help or any other
> > source that you might suggest to look at?
> >
> > Thanks again..
> >
> > Regards,
> >
> > Sanat.
> >
> > On Tue, Feb 2, 2010 at 3:35 AM, Kun Niu <ha...@gmail.com> wrote:
> >
> > > Hi Sanat,
> > > You can try to refer the DOMCount example bundled with xercesc.
> > > Frank's code is kind of right. And you should pay attention
> > to release the
> > > memory of XMLCh *.
> > > From the header file, I can see that XMLCh is redefined
> > from unsigned char.
> > >
> > > Regards,
> > > Kun
> > >
> > >
> > > Gierschner, Frank wrote:
> > >
> > >> Hi Sanat.
> > >>
> > >> Check out for the return types. getNodeName returns a
> > XMLCh* and not a
> > >> char*.
> > >> XMLCh* behaves much like a wchar_t* under Windows but is NOT really
> > >> equal to it.
> > >> Therefore you should check for the XMLString::transcode
> > functionality
> > >> given in most of the sample code (e.g. DOMCount: char *name =
> > >> XMLString::transcode(n->getNodeName());).
> > >> Look for class XStr or StrX which are doing the transcode
> > transparantly
> > >> for you but check if these classes may have become obsolete in your
> > >> distribution.
> > >>
> > >> Regards
> > >>  Frank
> > >>
> > >>
> > >>
> > >>> -----Original Message-----
> > >>> From: Sanat Talmaki [mailto:sanat.schumi@gmail.com] Sent:
> > Dienstag, 2.
> > >>> Februar 2010 05:49
> > >>> To: c-users@xerces.apache.org
> > >>> Subject: help using getNodeType and getNodeName
> > >>>
> > >>> Hello,
> > >>> I am having trouble understanding the getNodeName and getNodeType
> > >>> functions.
> > >>> I am trying a simple program just to understand the
> > basics of xerces. My
> > >>> code is below. I parse the xml doc and then call a
> > function NodeDetails.
> > >>> When I run it, I dont get the output I expected.
> > >>> I have pasted below the xml file, the code and the output I am
> > >>> getting........
> > >>> If you can guide me a little, I would be very grateful.
> > >>>
> > >>> Thank You
> > >>>
> > >>> Sanat.
> > >>>
> > >>> --------------------------------------------------------------
> > >>> --------------------------------------------------------------
> > >>> --------------------------------------------------------------
> > >>> ---------------------------------------------
> > >>> The XML file I am using is:
> > >>> <?xml version="1.0" encoding="utf-8"?>
> > >>> <catalog>
> > >>>  <book id="bk101">
> > >>>    <author>Gambardella, Matthew</author>
> > >>>    <title>XML Developer's Guide</title>
> > >>>    <genre>Computer</genre>
> > >>>    <price>44.95</price>
> > >>>    <publish_date>2000-10-01</publish_date>
> > >>>    <description>
> > >>>      An in-depth look at creating applications
> > >>>      with XML.
> > >>>    </description>
> > >>>  </book>......................
> > >>>
> > >>> --------------------------------------------------------------
> > >>> ---------------------------
> > >>> skeleton code is below:
> > >>>
> > >>>
> > >>> DOMDocument* document = parser->getDocument();
> > >>>
> > >>> NodeDetails(document);
> > >>>
> > >>> void NodeDetails(DOMNode* node)
> > >>>    {
> > >>>      cout << "Node Type: "
> > >>>           << node->getNodeType()
> > >>>           << endl
> > >>>           << "Node Name: "
> > >>>           << (node->getNodeName())
> > >>>           << endl;
> > >>>      if(node->hasChildNodes())
> > >>>      {
> > >>>        cout << "Child Node Type: "
> > >>>             << node->getFirstChild()->getNodeType()
> > >>>             << endl
> > >>>             << "Node Name: "
> > >>>             << (node->getFirstChild()->getNodeName())
> > >>>             << endl;
> > >>>      }
> > >>> --------------------------------------------------------------
> > >>>
> > ---------------------------------------------------------------------
> > >>> Output:
> > >>>
> > >>> Node Type: 9
> > >>> Node Name: 1227DEAC
> > >>> Child Node Type: 1
> > >>> Node Name: 008DB2D4
> > >>>
> > >>>
> > >>>
> > >>
> > >>
> > >>
> > >
> >
>

RE: help using getNodeType and getNodeName

Posted by "Gierschner, Frank" <Fr...@realtech.com>.
Hi Sanat.

To get a glimpse of understanding I guess (debugging) through the
samples is the best thing to do first.
Later on you can also consult the API documentation or can of course
query the archives.
I recognized that most of the questions posted here come over and over
again, so the possibility that you find one or more hints in the
archives (but maybe not the direct answer) has a propability of nearly
1.

Regards
 Frank 

> -----Original Message-----
> From: Sanat Talmaki [mailto:sanat.schumi@gmail.com] 
> Sent: Dienstag, 2. Februar 2010 16:53
> To: c-users@xerces.apache.org
> Subject: Re: help using getNodeType and getNodeName
> 
> Hi Frank, Kun...
> 
> I tried that code. It worked. Thanks so much.
> In general, is the mail archives a good place to look for 
> help or any other
> source that you might suggest to look at?
> 
> Thanks again..
> 
> Regards,
> 
> Sanat.
> 
> On Tue, Feb 2, 2010 at 3:35 AM, Kun Niu <ha...@gmail.com> wrote:
> 
> > Hi Sanat,
> > You can try to refer the DOMCount example bundled with xercesc.
> > Frank's code is kind of right. And you should pay attention 
> to release the
> > memory of XMLCh *.
> > From the header file, I can see that XMLCh is redefined 
> from unsigned char.
> >
> > Regards,
> > Kun
> >
> >
> > Gierschner, Frank wrote:
> >
> >> Hi Sanat.
> >>
> >> Check out for the return types. getNodeName returns a 
> XMLCh* and not a
> >> char*.
> >> XMLCh* behaves much like a wchar_t* under Windows but is NOT really
> >> equal to it.
> >> Therefore you should check for the XMLString::transcode 
> functionality
> >> given in most of the sample code (e.g. DOMCount: char *name =
> >> XMLString::transcode(n->getNodeName());).
> >> Look for class XStr or StrX which are doing the transcode 
> transparantly
> >> for you but check if these classes may have become obsolete in your
> >> distribution.
> >>
> >> Regards
> >>  Frank
> >>
> >>
> >>
> >>> -----Original Message-----
> >>> From: Sanat Talmaki [mailto:sanat.schumi@gmail.com] Sent: 
> Dienstag, 2.
> >>> Februar 2010 05:49
> >>> To: c-users@xerces.apache.org
> >>> Subject: help using getNodeType and getNodeName
> >>>
> >>> Hello,
> >>> I am having trouble understanding the getNodeName and getNodeType
> >>> functions.
> >>> I am trying a simple program just to understand the 
> basics of xerces. My
> >>> code is below. I parse the xml doc and then call a 
> function NodeDetails.
> >>> When I run it, I dont get the output I expected.
> >>> I have pasted below the xml file, the code and the output I am
> >>> getting........
> >>> If you can guide me a little, I would be very grateful.
> >>>
> >>> Thank You
> >>>
> >>> Sanat.
> >>>
> >>> --------------------------------------------------------------
> >>> --------------------------------------------------------------
> >>> --------------------------------------------------------------
> >>> ---------------------------------------------
> >>> The XML file I am using is:
> >>> <?xml version="1.0" encoding="utf-8"?>
> >>> <catalog>
> >>>  <book id="bk101">
> >>>    <author>Gambardella, Matthew</author>
> >>>    <title>XML Developer's Guide</title>
> >>>    <genre>Computer</genre>
> >>>    <price>44.95</price>
> >>>    <publish_date>2000-10-01</publish_date>
> >>>    <description>
> >>>      An in-depth look at creating applications
> >>>      with XML.
> >>>    </description>
> >>>  </book>......................
> >>>
> >>> --------------------------------------------------------------
> >>> ---------------------------
> >>> skeleton code is below:
> >>>
> >>>
> >>> DOMDocument* document = parser->getDocument();
> >>>
> >>> NodeDetails(document);
> >>>
> >>> void NodeDetails(DOMNode* node)
> >>>    {
> >>>      cout << "Node Type: "
> >>>           << node->getNodeType()
> >>>           << endl
> >>>           << "Node Name: "
> >>>           << (node->getNodeName())
> >>>           << endl;
> >>>      if(node->hasChildNodes())
> >>>      {
> >>>        cout << "Child Node Type: "
> >>>             << node->getFirstChild()->getNodeType()
> >>>             << endl
> >>>             << "Node Name: "
> >>>             << (node->getFirstChild()->getNodeName())
> >>>             << endl;
> >>>      }
> >>> --------------------------------------------------------------
> >>> 
> ---------------------------------------------------------------------
> >>> Output:
> >>>
> >>> Node Type: 9
> >>> Node Name: 1227DEAC
> >>> Child Node Type: 1
> >>> Node Name: 008DB2D4
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >
> 

Re: help using getNodeType and getNodeName

Posted by Sanat Talmaki <sa...@gmail.com>.
Hi Frank, Kun...

I tried that code. It worked. Thanks so much.
In general, is the mail archives a good place to look for help or any other
source that you might suggest to look at?

Thanks again..

Regards,

Sanat.

On Tue, Feb 2, 2010 at 3:35 AM, Kun Niu <ha...@gmail.com> wrote:

> Hi Sanat,
> You can try to refer the DOMCount example bundled with xercesc.
> Frank's code is kind of right. And you should pay attention to release the
> memory of XMLCh *.
> From the header file, I can see that XMLCh is redefined from unsigned char.
>
> Regards,
> Kun
>
>
> Gierschner, Frank wrote:
>
>> Hi Sanat.
>>
>> Check out for the return types. getNodeName returns a XMLCh* and not a
>> char*.
>> XMLCh* behaves much like a wchar_t* under Windows but is NOT really
>> equal to it.
>> Therefore you should check for the XMLString::transcode functionality
>> given in most of the sample code (e.g. DOMCount: char *name =
>> XMLString::transcode(n->getNodeName());).
>> Look for class XStr or StrX which are doing the transcode transparantly
>> for you but check if these classes may have become obsolete in your
>> distribution.
>>
>> Regards
>>  Frank
>>
>>
>>
>>> -----Original Message-----
>>> From: Sanat Talmaki [mailto:sanat.schumi@gmail.com] Sent: Dienstag, 2.
>>> Februar 2010 05:49
>>> To: c-users@xerces.apache.org
>>> Subject: help using getNodeType and getNodeName
>>>
>>> Hello,
>>> I am having trouble understanding the getNodeName and getNodeType
>>> functions.
>>> I am trying a simple program just to understand the basics of xerces. My
>>> code is below. I parse the xml doc and then call a function NodeDetails.
>>> When I run it, I dont get the output I expected.
>>> I have pasted below the xml file, the code and the output I am
>>> getting........
>>> If you can guide me a little, I would be very grateful.
>>>
>>> Thank You
>>>
>>> Sanat.
>>>
>>> --------------------------------------------------------------
>>> --------------------------------------------------------------
>>> --------------------------------------------------------------
>>> ---------------------------------------------
>>> The XML file I am using is:
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <catalog>
>>>  <book id="bk101">
>>>    <author>Gambardella, Matthew</author>
>>>    <title>XML Developer's Guide</title>
>>>    <genre>Computer</genre>
>>>    <price>44.95</price>
>>>    <publish_date>2000-10-01</publish_date>
>>>    <description>
>>>      An in-depth look at creating applications
>>>      with XML.
>>>    </description>
>>>  </book>......................
>>>
>>> --------------------------------------------------------------
>>> ---------------------------
>>> skeleton code is below:
>>>
>>>
>>> DOMDocument* document = parser->getDocument();
>>>
>>> NodeDetails(document);
>>>
>>> void NodeDetails(DOMNode* node)
>>>    {
>>>      cout << "Node Type: "
>>>           << node->getNodeType()
>>>           << endl
>>>           << "Node Name: "
>>>           << (node->getNodeName())
>>>           << endl;
>>>      if(node->hasChildNodes())
>>>      {
>>>        cout << "Child Node Type: "
>>>             << node->getFirstChild()->getNodeType()
>>>             << endl
>>>             << "Node Name: "
>>>             << (node->getFirstChild()->getNodeName())
>>>             << endl;
>>>      }
>>> --------------------------------------------------------------
>>> ---------------------------------------------------------------------
>>> Output:
>>>
>>> Node Type: 9
>>> Node Name: 1227DEAC
>>> Child Node Type: 1
>>> Node Name: 008DB2D4
>>>
>>>
>>>
>>
>>
>>
>

Re: help using getNodeType and getNodeName

Posted by Kun Niu <ha...@gmail.com>.
Hi Sanat,
You can try to refer the DOMCount example bundled with xercesc.
Frank's code is kind of right. And you should pay attention to release 
the memory of XMLCh *.
 From the header file, I can see that XMLCh is redefined from unsigned char.

Regards,
Kun

Gierschner, Frank wrote:
> Hi Sanat.
>
> Check out for the return types. getNodeName returns a XMLCh* and not a
> char*.
> XMLCh* behaves much like a wchar_t* under Windows but is NOT really
> equal to it.
> Therefore you should check for the XMLString::transcode functionality
> given in most of the sample code (e.g. DOMCount: char *name =
> XMLString::transcode(n->getNodeName());).
> Look for class XStr or StrX which are doing the transcode transparantly
> for you but check if these classes may have become obsolete in your
> distribution.
>
> Regards
>  Frank
>
>   
>> -----Original Message-----
>> From: Sanat Talmaki [mailto:sanat.schumi@gmail.com] 
>> Sent: Dienstag, 2. Februar 2010 05:49
>> To: c-users@xerces.apache.org
>> Subject: help using getNodeType and getNodeName
>>
>> Hello,
>> I am having trouble understanding the getNodeName and 
>> getNodeType functions.
>> I am trying a simple program just to understand the basics of 
>> xerces. My
>> code is below. I parse the xml doc and then call a function 
>> NodeDetails.
>> When I run it, I dont get the output I expected.
>> I have pasted below the xml file, the code and the output I am
>> getting........
>> If you can guide me a little, I would be very grateful.
>>
>> Thank You
>>
>> Sanat.
>>
>> --------------------------------------------------------------
>> --------------------------------------------------------------
>> --------------------------------------------------------------
>> ---------------------------------------------
>> The XML file I am using is:
>> <?xml version="1.0" encoding="utf-8"?>
>> <catalog>
>>   <book id="bk101">
>>     <author>Gambardella, Matthew</author>
>>     <title>XML Developer's Guide</title>
>>     <genre>Computer</genre>
>>     <price>44.95</price>
>>     <publish_date>2000-10-01</publish_date>
>>     <description>
>>       An in-depth look at creating applications
>>       with XML.
>>     </description>
>>   </book>......................
>>
>> --------------------------------------------------------------
>> ---------------------------
>> skeleton code is below:
>>
>>
>> DOMDocument* document = parser->getDocument();
>>
>> NodeDetails(document);
>>
>> void NodeDetails(DOMNode* node)
>>     {
>>       cout << "Node Type: "
>>            << node->getNodeType()
>>            << endl
>>            << "Node Name: "
>>            << (node->getNodeName())
>>            << endl;
>>       if(node->hasChildNodes())
>>       {
>>         cout << "Child Node Type: "
>>              << node->getFirstChild()->getNodeType()
>>              << endl
>>              << "Node Name: "
>>              << (node->getFirstChild()->getNodeName())
>>              << endl;
>>       }
>> --------------------------------------------------------------
>> ---------------------------------------------------------------------
>> Output:
>>
>> Node Type: 9
>> Node Name: 1227DEAC
>> Child Node Type: 1
>> Node Name: 008DB2D4
>>
>>     
>
>   

RE: help using getNodeType and getNodeName

Posted by "Gierschner, Frank" <Fr...@realtech.com>.
Hi Sanat.

Check out for the return types. getNodeName returns a XMLCh* and not a
char*.
XMLCh* behaves much like a wchar_t* under Windows but is NOT really
equal to it.
Therefore you should check for the XMLString::transcode functionality
given in most of the sample code (e.g. DOMCount: char *name =
XMLString::transcode(n->getNodeName());).
Look for class XStr or StrX which are doing the transcode transparantly
for you but check if these classes may have become obsolete in your
distribution.

Regards
 Frank

> -----Original Message-----
> From: Sanat Talmaki [mailto:sanat.schumi@gmail.com] 
> Sent: Dienstag, 2. Februar 2010 05:49
> To: c-users@xerces.apache.org
> Subject: help using getNodeType and getNodeName
> 
> Hello,
> I am having trouble understanding the getNodeName and 
> getNodeType functions.
> I am trying a simple program just to understand the basics of 
> xerces. My
> code is below. I parse the xml doc and then call a function 
> NodeDetails.
> When I run it, I dont get the output I expected.
> I have pasted below the xml file, the code and the output I am
> getting........
> If you can guide me a little, I would be very grateful.
> 
> Thank You
> 
> Sanat.
> 
> --------------------------------------------------------------
> --------------------------------------------------------------
> --------------------------------------------------------------
> ---------------------------------------------
> The XML file I am using is:
> <?xml version="1.0" encoding="utf-8"?>
> <catalog>
>   <book id="bk101">
>     <author>Gambardella, Matthew</author>
>     <title>XML Developer's Guide</title>
>     <genre>Computer</genre>
>     <price>44.95</price>
>     <publish_date>2000-10-01</publish_date>
>     <description>
>       An in-depth look at creating applications
>       with XML.
>     </description>
>   </book>......................
> 
> --------------------------------------------------------------
> ---------------------------
> skeleton code is below:
> 
> 
> DOMDocument* document = parser->getDocument();
> 
> NodeDetails(document);
> 
> void NodeDetails(DOMNode* node)
>     {
>       cout << "Node Type: "
>            << node->getNodeType()
>            << endl
>            << "Node Name: "
>            << (node->getNodeName())
>            << endl;
>       if(node->hasChildNodes())
>       {
>         cout << "Child Node Type: "
>              << node->getFirstChild()->getNodeType()
>              << endl
>              << "Node Name: "
>              << (node->getFirstChild()->getNodeName())
>              << endl;
>       }
> --------------------------------------------------------------
> ---------------------------------------------------------------------
> Output:
> 
> Node Type: 9
> Node Name: 1227DEAC
> Child Node Type: 1
> Node Name: 008DB2D4
>