我正在使用dbms_xmlgen生成一个xml文档。为了处理空值,我使用dbms_xmlgen.SETNULLHANDLING,但这是将特殊字符(如& )转换为&。如何避免这种转换,而不使用替换,因为它将扫描整个数据。帮帮忙吧。
发布于 2011-04-19 08:16:10
这种行为并不是由于SETNULLHANDLING函数造成的:这是标准的XML。
考虑:
SQL> SET DEFINE OFF
SQL> VARIABLE xml VARCHAR2(4000);
SQL> DECLARE
2 l_ctx dbms_xmlgen.ctxHandle;
3 BEGIN
4 l_ctx := dbms_xmlgen.newcontext('SELECT ''&'' x FROM DUAL');
5 :xml := dbms_xmlgen.getXML(l_ctx);
6 END;
7 /
PL/SQL procedure successfully completed
xml
---------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<X>&</X>
</ROW>
</ROWSET>生成的XML格式良好。如果将&替换为&,则XML的格式不会很好。
关于您的评论:只需在输入中使用<和>:
SQL> SET DEFINE OFF
SQL> VARIABLE xml VARCHAR2(4000);
SQL> BEGIN
2 :xml := dbms_xmlgen.getXML(
3 dbms_xmlgen.newcontext('SELECT ''This is <B>BOLD</B>'' x
4 FROM DUAL'));
5 END;
6 /
PL/SQL procedure successfully completed
xml
---------
<?xml version="1.0"?>
<ROWSET>
<ROW>
<X>This is <B>BOLD</B></X>
</ROW>
</ROWSET>https://stackoverflow.com/questions/5712886
复制相似问题