2

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

<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。

有没有人做过这个或有任何想法?

4

1 回答 1

0

我能得到的最接近的查询是:

(我使用了一个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>

希望能帮助到你...

于 2012-08-03T15:20:43.163 回答