Oracle xmlserializer中的尾随空格

时间:2018-09-03 13:00:23

标签: xml oracle xml-serialization

我在针对Linux作业的oracle sqlplus查询中使用XMLSerializer。在SQLDeveloper命令选项卡上,一切看起来都很好,但是在linux上,我看到xml输出带有空格:

${ORAPLUS} -s /@tns_entry <<_ORALINE
--WHENEVER OSERROR  EXIT 1
WHENEVER SQLERROR EXIT SQL.SQLCODE
SET TERM OFF
SET SHOW OFF
SET FEEDBACK OFF
SET HEADING OFF
SET HEAD OFF
SET PAGESIZE 0
set linesize 180
--set wrap on
set long 100000
SET LONGCHUNKSIZE 100000
SPOOL ${SPOOLFILE} APPEND
select xmlserialize(content xmlelement( "parent", xmlelement("child", 
       xmlelement("child-of-child", 'value'))) indent size=2) from dual;
SPOOL OFF
EXIT 0
_ORALINE

输出:

<parent>                                                                                                                                                                     
  <child>                                             How do I get rid of the spaces here?                                                                                                                    
    <child-of-child>value</child-of-child>                                                                                                                                   
  </child>                                                                                                                                                                   
</parent> 

我当然可以运行post-pretty-up命令来删除结尾的空格,但这似乎是在征服症状。

1 个答案:

答案 0 :(得分:4)

执行此操作并不是真正的XMLSerialize()调用,这是假脱机数据的默认行为。

在脚本中,添加:

SET TRIMSPOOL ON

From the SQL*Plus documentation

  

SET TRIMS [POOL] {ON | OFF}

     

确定SQL * Plus是否在每个假脱机行的末尾放置尾随空格。 ON删除每行末尾的空格。 OFF使SQL * Plus可以包含尾随空格。

交互式会话SET TEIMOUT ON有一个等效项,如果您重定向输出而不是假脱机输出,则很有用。