请教以下问题,谢谢!
以下两个程序输入报文为
false
false
1. 输入参数为varchar类型,代码如下。长度input_list_n,能够计算出来为1,但是取不出p_id的值,值为null,为什么?
create or replace procedure P_XMLTEST3(in_param in varchar, out_param out varchar)
IS
parser xmlparser.parser;
xmldoc xmldom.DOMDocument;
nodelist xmldom.domnodelist;
tempnode xmldom.domnode;
v_attr_name varchar2(500);
v_attr_val varchar2(500);
p_id varchar2(255);
input_list_n integer;
begin
parser := xmlparser.newParser;
xmlparser.setValidationMode(parser, TRUE);
xmlparser.parseBuffer(parser,in_param);
xmldoc := xmlparser.getDocument(parser);
xmlparser.freeParser(parser);
nodelist := xslprocessor.selectNodes(xmldom.makeNode(xmldoc),'/config');
tempnode := xmldom.item(nodelist, 0);
input_list_n:=xmldom.getLength(nodelist);
xslprocessor.valueOf(tempnode,'ID/text()',p_id);
dbms_output.put_line(p_id);
dbms_output.put_line(input_list_n);
end;
2. 输入参数为clob类型,在测试调试执行xmlparser.ParseCLOB(parser, in_param )时提示输入的列值为null,但是已经在测试的输入参数里输入以上报文,为什么?
create or replace procedure P_XMLTEST2(in_param in clob, out_param out varchar)
IS
parser xmlparser.parser;
xmldoc xmldom.DOMDocument;
nodelist xmldom.domnodelist;
tempnode xmldom.domnode;
v_attr_name varchar2(500);
v_attr_val varchar2(500);
p_id varchar2(255);
begin
parser := xmlparser.newParser;
xmlparser.ParseCLOB(parser, in_param );
xmldoc := xmlparser.getDocument(parser);
xmlparser.freeParser(parser);
nodelist := xslprocessor.selectNodes(xmldom.makeNode(xmldoc),'/config');
tempnode := xmldom.item(nodelist, 0);
xslprocessor.valueOf(tempnode,'ID/text()',p_id);
end;