Oracle包XMLDOM创建XML文件及其缺点
Oracle有一个包XMLDOM,可以很方便的创建XML文件.举个简单的例子.生成Test.xml,内容如下 lt;staff content = name and idg
Oracle有一个包XMLDOM,可以很方便的创建XML文件.举个简单的例子.生成Test.xml,内容如下
---------------------------------------------------------------------------------------------------------------------------------------
--生成xml的代码declare
doc XMLDOM.DOMDOCUMENT;
doc_node XMLDOM.DOMNODE;
root_node XMLDOM.DOMNODE;
user_node XMLDOM.DOMNODE;
item_node XMLDOM.DOMNODE;
root_elmt XMLDOM.DOMELEMENT;
user_elmt XMLDOM.DOMELEMENT;
item_elmt XMLDOM.DOMELEMENT;
item_text XMLDOM.DOMTEXT;
begin
doc := XMLDOM.NEWDOMDOCUMENT;
xmldom.setVersion(doc, '1.0');
xmldom.setCharset(doc, 'UTF-8');
--根节点
doc_node := XMLDOM.MAKENODE(doc);
root_elmt := XMLDOM.CREATEELEMENT(doc,'staff');
XMLDOM.SETATTRIBUTE(root_elmt,'content ','name and id');
root_node:=XMLDOM.APPENDCHILD(doc_node, XMLDOM.MAKENODE(root_elmt));
--节点1
user_elmt := XMLDOM.CREATEELEMENT(doc,'member');
user_node :=XMLDOM.APPENDCHILD(root_node, XMLDOM.MAKENODE(user_elmt));
item_elmt :=XMLDOM.CREATEELEMENT(doc,'name');
item_node :=XMLDOM.APPENDCHILD(user_node, XMLDOM.MAKENODE(item_elmt));
item_text := XMLDOM.CREATETEXTNODE(doc,'Arwen');
item_node:=XMLDOM.APPENDCHILD(item_node, XMLDOM.MAKENODE(item_text));
item_elmt :=XMLDOM.CREATEELEMENT(doc,'eno');
item_node :=XMLDOM.APPENDCHILD(user_node, XMLDOM.MAKENODE(item_elmt));
item_text := XMLDOM.CREATETEXTNODE(doc,'123');
item_node:=XMLDOM.APPENDCHILD(item_node, XMLDOM.MAKENODE(item_text));
--节点2
user_elmt := XMLDOM.CREATEELEMENT(doc,'member');
user_node :=XMLDOM.APPENDCHILD(root_node, XMLDOM.MAKENODE(user_elmt));
item_elmt :=XMLDOM.CREATEELEMENT(doc,'name');
item_node :=XMLDOM.APPENDCHILD(user_node, XMLDOM.MAKENODE(item_elmt));
item_text := XMLDOM.CREATETEXTNODE(doc,'tom');
item_node:=XMLDOM.APPENDCHILD(item_node, XMLDOM.MAKENODE(item_text));
item_elmt :=XMLDOM.CREATEELEMENT(doc,'eno');
item_node :=XMLDOM.APPENDCHILD(user_node, XMLDOM.MAKENODE(item_elmt));
item_text := XMLDOM.CREATETEXTNODE(doc,'456');
item_node:=XMLDOM.APPENDCHILD(item_node, XMLDOM.MAKENODE(item_text));
--写入操作系统文件中
XMLDOM.WRITETOFILE(doc,'DIR'||'\Test.xml');--注意必须先创建一个文件目录dir
--可以通过语句 : create or replace directory dir as 'd:\temp'
XMLDOM.FREEDOCUMENT(doc);
end;
这样生成XML文件非常方便,能满足一般的应用了.但是XMLDOM有个缺点,就是一次性在内存中生成所有xml文件内容,然后写入到磁盘文件中.如果xml文件太大,比如说有个table有几个G,想把它保存成xml文件.这样可能就会出现内存不足,生成文件失败.那该咋整呢?,