【问题标题】:Oracle SQL Developer: Exporting to XML without CDATAOracle SQL Developer:在不使用 CDATA 的情况下导出为 XML
【发布时间】:2012-08-03 23:20:43
【问题描述】:

最近开始使用 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。

有没有人做过这个或者有什么想法?

【问题讨论】:

标签: sql xml oracle


【解决方案1】:

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

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

希望对你有帮助……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多