Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

extractValue vs. XMLTable Character Entity Decoding

940421May 29 2012 — edited May 31 2012
In removing the deprecated extract/extractValue methods from my queries, I have run into an issue with character data being extracted via XMLTable.

Character entity encoded data (e.g. "'" as "'") was decoded by extractValue, but remains encoded by XMLTable. For example:
WITH myXML AS
(
    SELECT XMLTYPE.createXML('<root desc="Here' || chr(38) || 'apos;s an example"/>') AS x
    FROM dual
)
SELECT 
  x,
  extractValue(x, '/root/@desc'),
  mytab.example,
  XMLQuery('/root/@desc' PASSING x RETURNING CONTENT).getStringVal()
FROM 
  myXML,
  XMLTable
  (
    '/root'
    PASSING myXML.x
    COLUMNS
      example VARCHAR2(39) PATH '@desc'
  ) mytab;
returns

<root desc="Here&apos;s an example"/> Here's an example Here&apos;s an example Here&apos;s an example

Wrapping each column in the SELECT clause in dbms_xmlgen.convert() seems like overkill. Am I doing something wrong?

Thanks.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 28 2012
Added on May 29 2012
3 comments
1,655 views