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 Thomas Zabel <th...@gmx.net> on 2003/12/02 14:33:46 UTC

How to get the nodevalue/textcontent of a cdatasection? ? ?

Hallo,
sorry, that I post this here in the developers-forum, but who can help me,
if not you........and I could't find any hints in the
mailing-lists..............
I parse follwing xml-document:

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<AUTHORING>
   <ARTICLE ID="868888">
      <META>
         <ARTICLETYP ID="0"/>
         <NEWSTYP ID="1">Aktien</NEWSTYP>
         <CATEGORY ID="5">Marktberichte</CATEGORY>
         <AUTHOR ID="341">SmartHouseMedia </AUTHOR>
         <TIMESTAMP>1068023820</TIMESTAMP>
         <MSEG ID=""/><BRANCH ID=""/><LAND ID=""/>
         <COPYRIGHT>&amp;copy; wallstreet:online AG / SmartHouse Media
GmbH</COPYRIGHT>
         <PRIMARYSTOCK ISIN="" WKN="" SYMBOL="" WOID=""
INDEX_NAME_LIST=""></PRIMARYSTOCK>
      </META>
      <CONTENT>
         <HEADLINE><![CDATA[TecDAX am Morgen: Rote Vorzeichen, LION verliert
über 8 Prozent]]></HEADLINE>
         <SUBLINE><![CDATA[Die deutschen Nebenwerte im TecDAX sind mit
leichten Abschlägen in den Mittwoch-Handel gestartet. Der TecDAX]]></SUBLINE>
      </CONTENT>
   </ARTICLE>
</AUTHORING>

what I want is the content/nodevalue of the CDATAsection in the element
'SUBLINE'. to do that, i have written follwing simple    programme, but it
doesn't to, what i want.

domparser=new XercesDOMParser();
domparser->parse("wallstreet.xml");
DOMDocument *parsedxmldoc=domparser->getDocument();
DOMNodeList *referenced = parsedxmldoc->getElementsByTagName(X("SUBLINE"));
   cout << "count of nodes:" << referenced->getLength();
   cout << "content:" <<
XMLString::transcode(referenced->item(0)->getTextContent());
   cout << "\nNodename:" <<
XMLString::transcode(referenced->item(0)->getNodeName());
   cout << "\ncontent:" <<
XMLString::transcode(referenced->item(0)->getFirstChild()->getNodeValue());
   //cout << "\ncontent:" <<
XMLString::transcode(referenced->item(0)->getFirstChild()->getData());
   cout << "\ncontent:" <<
XMLString::transcode(referenced->item(0)->getFirstChild()->getTextContent());
   cout << "\nname of child:" <<
XMLString::transcode(referenced->item(0)->getFirstChild()->getNodeName());
   if (referenced->item(0)->getFirstChild()->getNodeValue()) cout <<
"nodevalue!=NULL!\n";

this is the output, that i get:
---------------------
count of nodes:1
content:
Nodename:SUBLINE
content:
content:
name of child:#cdata-section
nodevalue!=NULL!

Whats wrong? is it possible, that there is a bug? 
I 'd be very lucky, if anybodey could give me a hint, how to get the
textcontent/nodevalue of a CDADASection-node, because this is very important for my
project

Thanx in advance
Thomas








   
  I would be very thankful, if anybody of you could tell me, what I do
wrong. to me it seems as if I haven't done something wrong. if somebody could tell
me, that I haven't done anything wrong, I'd be very appreciated, too. then I
could make a bug-report............








-- 
+++ GMX - die erste Adresse für Mail, Message, More +++
Neu: Preissenkung für MMS und FreeMMS! http://www.gmx.net



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


RE: How to get the nodevalue/textcontent of a cdatasection? ? ?

Posted by Erik Rydgren <er...@mandarinen.se>.
What version of the parser do you use? The getTextContent method wasn't
implemented up to the 2.3.0 version. Using the current implementation I
have no problems reading the text content of an element containing
CDATASections.

/ Erik

> -----Original Message-----
> From: Thomas Zabel [mailto:thomas.zabel@gmx.net]
> Sent: den 2 december 2003 14:34
> To: xerces-c-dev@xml.apache.org
> Subject: How to get the nodevalue/textcontent of a cdatasection? ? ?
> 
> Hallo,
> sorry, that I post this here in the developers-forum, but who can help
me,
> if not you........and I could't find any hints in the
> mailing-lists..............
> I parse follwing xml-document:
> 
> <?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
> <AUTHORING>
>    <ARTICLE ID="868888">
>       <META>
>          <ARTICLETYP ID="0"/>
>          <NEWSTYP ID="1">Aktien</NEWSTYP>
>          <CATEGORY ID="5">Marktberichte</CATEGORY>
>          <AUTHOR ID="341">SmartHouseMedia </AUTHOR>
>          <TIMESTAMP>1068023820</TIMESTAMP>
>          <MSEG ID=""/><BRANCH ID=""/><LAND ID=""/>
>          <COPYRIGHT>&amp;copy; wallstreet:online AG / SmartHouse Media
> GmbH</COPYRIGHT>
>          <PRIMARYSTOCK ISIN="" WKN="" SYMBOL="" WOID=""
> INDEX_NAME_LIST=""></PRIMARYSTOCK>
>       </META>
>       <CONTENT>
>          <HEADLINE><![CDATA[TecDAX am Morgen: Rote Vorzeichen, LION
> verliert
> über 8 Prozent]]></HEADLINE>
>          <SUBLINE><![CDATA[Die deutschen Nebenwerte im TecDAX sind mit
> leichten Abschlägen in den Mittwoch-Handel gestartet. Der
> TecDAX]]></SUBLINE>
>       </CONTENT>
>    </ARTICLE>
> </AUTHORING>
> 
> what I want is the content/nodevalue of the CDATAsection in the
element
> 'SUBLINE'. to do that, i have written follwing simple    programme,
but it
> doesn't to, what i want.
> 
> domparser=new XercesDOMParser();
> domparser->parse("wallstreet.xml");
> DOMDocument *parsedxmldoc=domparser->getDocument();
> DOMNodeList *referenced = parsedxmldoc-
> >getElementsByTagName(X("SUBLINE"));
>    cout << "count of nodes:" << referenced->getLength();
>    cout << "content:" <<
> XMLString::transcode(referenced->item(0)->getTextContent());
>    cout << "\nNodename:" <<
> XMLString::transcode(referenced->item(0)->getNodeName());
>    cout << "\ncontent:" <<
> XMLString::transcode(referenced->item(0)->getFirstChild()-
> >getNodeValue());
>    //cout << "\ncontent:" <<
> XMLString::transcode(referenced->item(0)->getFirstChild()->getData());
>    cout << "\ncontent:" <<
> XMLString::transcode(referenced->item(0)->getFirstChild()-
> >getTextContent());
>    cout << "\nname of child:" <<
>
XMLString::transcode(referenced->item(0)->getFirstChild()->getNodeName()
);
>    if (referenced->item(0)->getFirstChild()->getNodeValue()) cout <<
> "nodevalue!=NULL!\n";
> 
> this is the output, that i get:
> ---------------------
> count of nodes:1
> content:
> Nodename:SUBLINE
> content:
> content:
> name of child:#cdata-section
> nodevalue!=NULL!
> 
> Whats wrong? is it possible, that there is a bug?
> I 'd be very lucky, if anybodey could give me a hint, how to get the
> textcontent/nodevalue of a CDADASection-node, because this is very
> important for my
> project
> 
> Thanx in advance
> Thomas
> 
> 
> 
> 
> 
> 
> 
> 
> 
>   I would be very thankful, if anybody of you could tell me, what I do
> wrong. to me it seems as if I haven't done something wrong. if
somebody
> could tell
> me, that I haven't done anything wrong, I'd be very appreciated, too.
then
> I
> could make a bug-report............
> 
> 
> 
> 
> 
> 
> 
> 
> --
> +++ GMX - die erste Adresse für Mail, Message, More +++
> Neu: Preissenkung für MMS und FreeMMS! http://www.gmx.net
> 
> 
> 
> ---------------------------------------------------------------------
> 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