oracle 写xml

来源:互联网 发布:unity3d 创建材质球 编辑:程序博客网 时间:2024/05/13 05:35

  Function Resulttoxmlclob( In_Party_Record In Party_Recordtype)
    Return Clob Is
    v_Xmldoc           Xmldom.Domdocument;
    v_Xmlrootnode      Xmldom.Domnode;

    v_Xmlareanode      Xmldom.Domnode;   -- 客户地区信息
    v_Xmlcodenode      Xmldom.Domnode;   -- 客户标识信息
    v_Xmlidentnode     Xmldom.Domnode;   -- 客户证件信息
    v_Xmlothernode     Xmldom.DOmnode;   -- 客户其他信息
    v_Xmltmpnode       Xmldom.Domnode;
    v_Resultxmlclob    Clob;
  Begin
    Dbms_Lob.Createtemporary(v_Resultxmlclob, True);
    v_Xmldoc          := Xmldom.Newdomdocument;
    v_Xmlrootnode     := Xmldom.Appendchild(Xmldom.Makenode(v_Xmldoc),
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'SvcCont')));
    v_Xmlrootnode     := Xmldom.Appendchild(v_Xmlrootnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'QryInfoRsp')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlrootnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'InfoTypeID')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                                           '资料类型')));
    v_Xmlrootnode     := Xmldom.Appendchild(v_Xmlrootnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'InfoCont')));
    v_Xmlrootnode     := Xmldom.Appendchild(v_Xmlrootnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'CustInfo')));
    v_Xmlareanode     := Xmldom.Appendchild(v_Xmlrootnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'BelongInfo')));
    v_Xmlcodenode     := Xmldom.Appendchild(v_Xmlrootnode,
                                           Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'PartyCodeInfo')));
    v_Xmlidentnode    := Xmldom.Appendchild(v_Xmlrootnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                                           'IdentityInfo')));
    v_Xmlothernode    := v_Xmlrootnode;   -- OtherInfo下的信息都在根节点下

    -- 添加客户地区信息
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlareanode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                           'ProvinceCode')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                                           '所属省代码')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlareanode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                           'ProvinceName')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                                           '所属省名称')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlareanode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                                           'CityCode')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                          In_Party_Record.partyArea_Record.cityCode)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlareanode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CityName')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyArea_Record.cityName)));
    -- 添加客户标识信息
    For i In 1 .. In_Party_Record.PartyCode_list.Count Loop
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlcodenode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CodeType')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.PartyCode_list(i).codeType)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlcodenode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CodeValue')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.PartyCode_list(i).codeValue)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlcodenode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CityCode')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyArea_Record.cityCode)));
    End Loop;
    -- 添加客户证件信息
    For i In 1 .. In_Party_Record.partyIdentity_list.Count Loop
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlidentnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'IdentType')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyIdentity_list(i).identType)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlidentnode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'IdentNum')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyIdentity_list(i).identNum)));
    End Loop;

    -- 添加客户其他信息
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlothernode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CustName')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyOther_Record.custName)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlothernode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CustBrand')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyOther_Record.custBrand)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlothernode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CustGroup')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyOther_Record.custGroup)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlothernode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'ISVip')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyOther_Record.iSVip)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlothernode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'VipCardNo')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyOther_Record.vipCardNo)));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmlothernode,
                                            Xmldom.Makenode(Xmldom.Createelement(v_Xmldoc,
                                           'CustAddress')));
    v_Xmltmpnode      := Xmldom.Appendchild(v_Xmltmpnode,
                                            Xmldom.Makenode(Xmldom.Createtextnode(v_Xmldoc,
                                            In_Party_Record.partyOther_Record.custAddress)));
    ------ 添加文件头
    Xmldom.Writetoclob(v_Xmldoc, v_Resultxmlclob);
    v_Resultxmlclob := '<?xml version = ' || '''1.0''' || ' encoding = ' ||
                       '''UTF-8''' || '?>' || chr(13) || v_resultxmlclob;
    Xmldom.Freedocument(v_Xmldoc);
    Return v_Resultxmlclob;
  End Resulttoxmlclob;