2012-08-03 50 views
2

最近开始使用Oracle SQL Developer。我已成功运行查询并将结果导出到XML(encoding ='UTF-8')。例如Oracle SQL Developer:无CDATA导出到XML

<RESULTS> 
    <ROW> 
     <COLUMN NAME="ACCOUNTID"><![CDATA[1]]></COLUMN> 
     <COLUMN NAME="ADDRLINE1"><![CDATA[XYZ company]]></COLUMN> 
     <COLUMN NAME="ADDRLINE2"><![CDATA[]]></COLUMN> 
     <COLUMN NAME="ADDRLINE3"><![CDATA[999 6th AVENUE]]></COLUMN> 
     <COLUMN NAME="ADDRLINE4"><![CDATA[NEW YORK]]></COLUMN> 
     <COLUMN NAME="ADDRLINE5"><![CDATA[NEW YORK, NY 10112]]></COLUMN> 
     <COLUMN NAME="COUNTRY"><![CDATA[USA]]></COLUMN> 
    </ROW> 

我的问题:有没有办法导出没有CDATA的defs?即它是“简单”的数据,我想要/需要的是:

<Row> 
    <X>1</X> 
    <ACCOUNTID>1</ACCOUNTID> 
    <ADDRLINE1>XYZ company</ADDRLINE1> 
    <ADDRLINE2/> 
    <ADDRLINE3>999 6th AVENUE </ADDRLINE3> 
    <ADDRLINE4>NEW YORK</ADDRLINE4> 
    <ADDRLINE5>NEW YORK, NY 10112</ADDRLINE5> 
    <COUNTRY>USA</COUNTRY> 
</Row> 

通过偏好查找,找不到任何有用的东西。我看到一个非常陈旧的帖子,说明生成的XML是通过XSL生成的,但我找不到任何XSL。

有没有人曾经这样做或有任何想法?

+0

是从数据库中生成XML的另一种方法选择一个选项?看看xmlelement – 2012-08-03 09:53:10

+0

,这已在6年前提出 - 但尚未提供。请阅读此处 - https://forums.oracle.com/forums/thread.jspa?threadID=370848 – emaillenin 2012-08-03 10:15:58

回答

0

我能得到第i个查询是这样的最接近:

(我使用了一个WITH子句生成表记录)

WITH t 
    AS (SELECT '1' AS x, 
      '1' AS accountid, 
      'XYZ company' AS addrline1, 
      NULL AS addrline2, 
      '999 6th AVENUE' AS addrline3, 
      'NEW YORK' AS addrline4, 
      'NEW YORK, NY 10112' AS addrline5, 
      'USA' AS country 
     FROM dual) 
SELECT xmlelement("row", 
      xmlelement(x,x), 
      xmlelement(accountid,accountid), 
      xmlelement(addrline1,addrline1), 
      xmlelement(addrline2,addrline2), 
      xmlelement(addrline3,addrline3), 
      xmlelement(addrline4,addrline4), 
      xmlelement(addrline5,addrline5), 
      xmlelement(country,country) 
     ) 
    FROM t; 

输出生成的是:

<row> 
    <X>1</X> 
    <ACCOUNTID>1</ACCOUNTID> 
    <ADDRLINE1>XYZ company</ADDRLINE1> 
    <ADDRLINE2></ADDRLINE2> 
    <ADDRLINE3>999 6th AVENUE</ADDRLINE3> 
    <ADDRLINE4>NEW YORK</ADDRLINE4> 
    <ADDRLINE5>NEW YORK, NY 10112</ADDRLINE5> 
    <COUNTRY>USA</COUNTRY> 
</row> 

希望它有帮助...