我是想在一个存储过程里构造一个小的xml,然后把其中的test节点插入到传入的大节点G_DOM里。
前面构造都没问题,但在最后使用XMLDOM.appendChild方法时,外面会抛异常:
1-User-Defined Exception  不知道具体原因。代码如下,望高手指点!!
 
 Procedure insertATestNode(G_DOM In Out XMLDOM.DOMNODE )Is
    newNodeStr      Varchar2(32767);
    myNode          xmldom.DOMNode;
    coNode          xmldom.DOMNode;
    myDoc           xmldom.DOMDocument;
    L_PARSER        xmlparser.PARSER;
    tempNode        xmldom.DOMNode;
    myNodeName          Varchar2(20);
    Begin    
     --构造包含test节点的xml字符串,再用myNode获得test节点
     newNodeStr := '<?xml version="1.0" encoding="UTF-8"?><test>测试节点</test>';
     L_PARSER := xmlparser.NEWPARSER;
     xmlparser.parseClob(L_PARSER, newNodeStr);
     myDoc := xmlparser.GETDOCUMENT(L_PARSER);
     myNode := xslprocessor.selectSingleNode(XMLDOM.makeNode(myDoc),'/test');
     
     --在G_DOM中选择好要插入test节点的cos节点
     coNode := xslprocessor.selectSingleNode(G_DOM,'/scene/cos');     --下面这句测试用的,可以"test",说明节点构建本身没错
     myNodeName:= xmldom.getNodeName(myNode);
     
     --将test节点插入cos节点,这句出错!!
     coNode := XMLDOM.appendChild(coNode,myNode);       
    End;
    

解决方案 »

  1.   

    都大半年了也每人理,55555
    还是自己来回答下吧。
    关键是下面几条语句,变量定义就省了。--有一个原始节点:
    modify := xmldom.makeNode(xmldom.createElement(doc,'modify'));--这句是不会报错的
    nodeOld := xmldom.makeNode(xmldom.createElement(doc,'nodeOld'));
    tempNode := xmldom.appendChild(modify,nodeOld);--这句是会报错的。
    nodeNew := xmldom.makeNode(xmldom.createElement(docMod,'nodeNew'));
    tempNode := xmldom.appendChild(modify,nodeNew);看出区别来了吗?一个是在doc,一个是在docMod。我去年的问题就在这里。