XML 从 Oracle 9i 迁移到 11g 的处理问题
XML processing issue migrating from Oracle 9i to 11g
以下代码的输出在 Oracle 9i (9.2.0.8.0) 和 11g (11.2.0.3.0) 上有所不同:
DECLARE
var XMLType;
doc DBMS_XMLDOM.DOMDocument;
ndoc DBMS_XMLDOM.DOMNode;
buf VARCHAR2(2000);
pd DBMS_XMLDOM.DOMDocument;
v_parser dbms_xmlparser.parser;
BEGIN
var := XMLType('<PERSON><NAME> </NAME></PERSON>');
-- Create DOMDocument handle
doc := DBMS_XMLDOM.newDOMDocument(var);
ndoc := DBMS_XMLDOM.makeNode(doc);
DBMS_XMLDOM.writeToBuffer(ndoc, buf);
DBMS_OUTPUT.put_line('Before:'||buf);
v_parser := dbms_xmlparser.newparser;
DBMS_XMLPARSER.PARSEBUFFER(v_parser, buf);
pd := dbms_xmlparser.getdocument(v_parser);
ndoc := DBMS_XMLDOM.makeNode(pd);
DBMS_XMLDOM.writeToBuffer(ndoc, buf);
DBMS_OUTPUT.put_line('now:'||buf);
END;
/
在 9i 上它的输出是:
Before:<PERSON>
<NAME/>
</PERSON>
now:<PERSON>
<NAME/>
</PERSON>
在 11g 上我得到:
Before:<PERSON>
<NAME> </NAME>
</PERSON>
now:<PERSON>
<NAME> </NAME>
</PERSON>
我在 11g 上执行此操作时需要有 9i 输出,我应该做些什么更改。我尝试使用解析器,但没有用。
解决方案是修复生成白色的代码space
一旦下面的代码
问题就解决了
var := XMLType('<PERSON><NAME> </NAME></PERSON>');
改写如下:
var := XMLType('<PERSON><NAME></NAME></PERSON>');
以下代码的输出在 Oracle 9i (9.2.0.8.0) 和 11g (11.2.0.3.0) 上有所不同:
DECLARE
var XMLType;
doc DBMS_XMLDOM.DOMDocument;
ndoc DBMS_XMLDOM.DOMNode;
buf VARCHAR2(2000);
pd DBMS_XMLDOM.DOMDocument;
v_parser dbms_xmlparser.parser;
BEGIN
var := XMLType('<PERSON><NAME> </NAME></PERSON>');
-- Create DOMDocument handle
doc := DBMS_XMLDOM.newDOMDocument(var);
ndoc := DBMS_XMLDOM.makeNode(doc);
DBMS_XMLDOM.writeToBuffer(ndoc, buf);
DBMS_OUTPUT.put_line('Before:'||buf);
v_parser := dbms_xmlparser.newparser;
DBMS_XMLPARSER.PARSEBUFFER(v_parser, buf);
pd := dbms_xmlparser.getdocument(v_parser);
ndoc := DBMS_XMLDOM.makeNode(pd);
DBMS_XMLDOM.writeToBuffer(ndoc, buf);
DBMS_OUTPUT.put_line('now:'||buf);
END;
/
在 9i 上它的输出是:
Before:<PERSON>
<NAME/>
</PERSON>
now:<PERSON>
<NAME/>
</PERSON>
在 11g 上我得到:
Before:<PERSON>
<NAME> </NAME>
</PERSON>
now:<PERSON>
<NAME> </NAME>
</PERSON>
我在 11g 上执行此操作时需要有 9i 输出,我应该做些什么更改。我尝试使用解析器,但没有用。
解决方案是修复生成白色的代码space 一旦下面的代码
问题就解决了var := XMLType('<PERSON><NAME> </NAME></PERSON>');
改写如下:
var := XMLType('<PERSON><NAME></NAME></PERSON>');