Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> XML: Error (ClassCastException) while retrieving data from a CDATA-Section

XML: Error (ClassCastException) while retrieving data from a CDATA-Section

From: Markus Schwabe <schwabe_at_dodona.de>
Date: Mon, 23 Sep 2002 22:02:26 +0200
Message-ID: <3d8f6fd2$0$231$4d4ebb8e@businessnews.de.uu.net>


Hello,

Ware: Oracle 8.1.7.4 64bit, XDK for PL/SQL Version 9.2.0.3, Solaris8 64bit XDK installed under schema XML_SCHEMA with select/execute-grant of all packages to user SCHWABE.

I can't retrieve Data from the CDATA-Section of an XML-String, neither with getData(DOMCharacterData) or substringData. Also getLength fails. I get always
the following error:

ERROR at line 1:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.ClassCastException

ORA-06512: at "XML_SCHEMA.XMLCHARDATACOVER", line 0
ORA-06512: at "XML_SCHEMA.XMLDOM", line 853
ORA-06512: at "SCHWABE.XML_TEST", line 47
ORA-06512: at line 1

I can successfully cast the DOMNode to a CharacterData with makeCharacterData
and check with isNull (DOMCharacterData) (returns FALSE).

My Testcase:

  1. A Function which build a XML-Document:

CREATE OR REPLACE FUNCTION XML_ResponseCalc RETURN VARCHAR2 IS doc VARCHAR2(32767);
BEGIN
doc :=
'<?xml version="1.0" encoding="UTF-8"?>
<RSDecEng>
<Version>1.00</Version>
<ResponseCalc>
<ID>00000000000000000014</ID>
<Burst>
<Definition>
<Count>1</Count>
<ID>
<Start>1</Start>
<Length>4</Length>
</ID>
<Var>
<Name>Risiko_1</Name>
<Start>5</Start>
<Length>5</Length>
</Var>
</Definition>
<Data>
<Length>9</Length>
<Count>5</Count>
<![CDATA[

1 0.001 
2 0.002 
3 0.003 
4 0.004 
5 0.005 
6 0.006 
7 0.007 
8 0.008 
9 0.009 

10 0.010
]]>
</Data>
</Burst>
</ResponseCalc>
</RSDecEng>

';

2) The Procedure which parses the XML-Document (no Exception-Handling):

CREATE OR REPLACE PROCEDURE XML_TEST IS Parser XML_SCHEMA.XMLParser.Parser;
DOMDocument XML_SCHEMA.XMLDOM.DOMDocument; DOMNode XML_SCHEMA.XMLDOM.DOMNode;
DOMNodeItem XML_SCHEMA.XMLDOM.DOMNode;
DOMNodeList XML_SCHEMA.XMLDOM.DOMNodeList; DOMCharacterData XML_SCHEMA.XMLDOM.DOMCharacterData; TheDocument CLOB;
ID VARCHAR2(100);
Data VARCHAR2(2000);
BEGIN
-- LOB
DBMS_LOB.CREATETEMPORARY(TheDocument, TRUE); DBMS_LOB.WRITEAPPEND(
TheDocument, LENGTH(XML_ResponseCalc), XML_ResponseCalc); -- Parse
Parser := XML_SCHEMA.XMLParser.NewParser; XML_SCHEMA.XMLParser.ParseCLOB(Parser, TheDocument); DOMDocument := XML_SCHEMA.XMLParser.GetDocument(Parser); XML_SCHEMA.XMLParser.FreeParser(Parser); -- Node
DOMNode := XML_SCHEMA.XMLDOM.MakeNode(DOMDocument); -- Get ID
DOMNodeList := XML_SCHEMA.XSLProcessor.SelectNodes (DOMNode,'/RSDecEng/ResponseCalc/ID/text()'); IF XML_SCHEMA.XMLDOM.GetLength(DOMNodeList) > 0 THEN DOMNodeItem := XML_SCHEMA.XMLDOM.Item(DOMNodeList, 0); XML_SCHEMA.XMLDOM.WriteToBuffer(DOMNodeItem, ID); SYS.DBMS_OUTPUT.PUT_LINE ('ID: '||ID);
END IF;
-- Get CDATA
DOMCharacterData := XML_SCHEMA.XMLDOM.MakeCharacterData(DomNode); -- <-- ok here...
IF NOT XML_SCHEMA.XMLDOM.isNull (DOMCharacterData) THEN -- <-- ...and here Data := XML_SCHEMA.XMLDOM.GETDATA(DOMCharacterData); -- <-- ...but here Exception raise
END IF;
END; I hope you can help me.
Thank you in advance
Markus Schwabe Received on Mon Sep 23 2002 - 15:02:26 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US