需要解析的xml文件:people.xml
1 <?xml version="1.0"?>
2 <PEOPLE>
3 <PERSON PERSONID="E01">
4 <NAME>Tony Blair</NAME>
5 <ADDRESS>10 Downing Street, London, UK</ADDRESS>
6 <TEL>(061) 98765</TEL>
7 <FAX>(061) 98768</FAX>
8 <EMAIL>blair@everywhere.com</EMAIL>
9 </PERSON>
10 <PERSON PERSONID="E02">
11 <NAME>Bill Clinton</NAME>
12 <ADDRESS>White House, USA</ADDRESS>
13 <TEL>(001) 6400 98765</TEL>
14 <FAX>(001) 6400 98769</FAX>
15 <EMAIL>bill@everywhere.com</EMAIL>
16 </PERSON>
17 <PERSON PERSONID="E03">
18 <NAME>Tom Cruise</NAME>
19 <ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
20 <TEL>(001) 4500 67859</TEL>
21 <FAX>(001) 4500 67895</FAX>
22 <EMAIL>cruise@everywhere.com</EMAIL>
23 </PERSON>
24 <PERSON PERSONID="E04">
25 <NAME>Linda Goodman</NAME>
26 <ADDRESS>78 Crax Lane, London, UK</ADDRESS>
27 <TEL>(061) 54 56789</TEL>
28 <FAX>(061) 54 56772</FAX>
29 <EMAIL>linda@everywhere.com</EMAIL>
30 </PERSON>
31 </PEOPLE>
我以scott用户为例,新建表:
1 CREATE TABLE PEOPLE
2 (
3 PERSONID VARCHAR2(4) PRIMARY KEY,
4 NAME VARCHAR2(50),
5 ADDRESS VARCHAR2(200),
6 TEL VARCHAR2(20),
7 FAX VARCHAR2(20),
8 EMAIL VARCHAR2(100)
9 );
解析并持久化的存储过程代码:
1 /**
2 *file_path 需要解析的XML文件路径 如:D:\OracleTest\people.xml
3 *log_path 保存日志的文件的路径 如: D:\OracleTest\xmllog.txt
4 **/
5
6 CREATE OR REPLACE PROCEDURE addPerson(file_path VARCHAR2,log_path VARCHAR2)
7 AS
8 --//XML解析器
9 xmlPar XMLPARSER.parser := XMLPARSER.NEWPARSER;
10 --//DOM文档对象
11 doc xmldom.DOMDocument;
12 len integer;
13 personNodes xmldom.DOMNodeList;
14 chilNodes xmldom.DOMNodeList;
15 tempNode xmldom.DOMNode;
16 tempArrMap xmldom.DOMNamedNodeMap;
17 --================================
18 --以下变量用于获取XML节点的值
19 pid varchar2(4);
20 name varchar2(50);
21 address varchar2(200);
22 tel varchar2(20);
23 fax varchar2(20);
24 email varchar(100);
25 tmp integer;
26 --================================
27 BEGIN
28 xmlPar := xmlparser.newParser;
29 xmlparser.setErrorLog( xmlPar, log_path);
30 xmlparser.parse(xmlPar, file_path);
31 doc := xmlparser.getDocument( xmlPar );
32 -- 释放解析器实例
33 xmlparser.freeParser(xmlPar);
34 -- 获取所有PERSON元素
35 personNodes := xmldom.getElementsByTagName( doc, 'PERSON' );
36 len := xmldom.getLength( personNodes );
37 --遍历所有PERSON元素
38 FOR i in 0..len-1
39 LOOP
40 --获取第i个PERSON
41 tempNode := xmldom.item( personNodes, i );
42 --所有属性
43 tempArrMap := xmldom.getAttributes(tempNode);
44 --获取PERSONID的值
45 pid := xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap,'PERSONID'));
46 --获取子元素的值
47 chilNodes := xmldom.getChildNodes(tempNode);
48 tmp := xmldom.GETLENGTH( chilNodes );
49 name := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 0 )));
50 address := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 1 )));
51 tel := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 2 )));
52 fax := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 3 )));
53 email := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 4 )));
54 --插入数据
55 INSERT INTO PEOPLE VALUES (pid,name,address,tel,fax,email);
56 COMMIT;
57 END LOOP;
58 -- 释放文档对象
59 xmldom.freeDocument(doc);
60 EXCEPTION
61 WHEN OTHERS THEN
62 DBMS_output.PUT_LINE(SQLERRM);
63 END addPerson;
有许多朋友都说执行时出现错误,现在我把我在Oracle9i使用的截图贴出来,以作参考:
分享到:
相关推荐
Oracle存储过程是在数据库中编译并存储的一组SQL语句和过程化控制流语句的集合,它们可以接受输入参数,输出参数,甚至返回多个结果集。在本例中,我们创建了两个存储过程:`GetSingleEmpRS` 和 `GetDoubleEmpRS`,...
综上所述,Java核心技术、Oracle数据库和XML共同构建了现代软件开发的基础,它们之间的结合能够实现复杂的数据处理、持久化存储以及高效的数据交换,对于理解和掌握这些知识,对于任何IT专业人士来说都是至关重要的...
对于大量数据的操作,可以考虑使用存储过程、批量插入等方式提高性能,并合理设计数据库索引来加速查询。 以上就是JSP解析XML成绩管理系统的核心知识点,涵盖了XML数据结构、JSP与数据库交互、用户界面设计、权限...
在Java编程领域,数据库设计和持久化操作是核心部分,它们确保了应用程序的数据存储和检索。持久化是指将数据保存到非易失性存储(如硬盘)中,以便即使在程序关闭后也能再次访问。本篇文章将深入探讨如何通过IO...
这在跨平台数据交换和持久化对象时非常有用。例如,Java的JAXB库提供了自动XML序列化和反序列化的能力。 七、XML在网络通信中的应用 XML常用于Web服务(如SOAP),作为数据交换格式。XML请求和响应包含在HTTP报文中...
如果需要将XML数据持久化,可以使用`XmlTextWriter`将XML写入文件,或者使用.NET Framework提供的XML序列化技术将对象转换为XML并保存。 5. **性能优化**:为了提高性能,可以使用数据适配器(如`SqlDataAdapter`)...
在这个例子中,TinyXML库被用来解析和持久化XML数据。TinyXML是一个轻量级的C++库,它能够方便地读写XML文档。通过XML接口,用户可以以XML文件的形式导入或导出数据,这对于数据的调试和跨平台传递非常有用。 具体...
这个工具在处理数据交换、持久化或配置文件时非常有用,特别是在使用像Castor这样的框架时。Castor是一个强大的对象关系映射(ORM)和数据绑定框架,它可以将Java对象与数据库记录或XML文档之间建立映射关系。 ...
持久化类的映射信息通常存储在`.hbm.xml`文件中。在配置文件中,我们需要引用这些映射文件: ```xml <mapping resource="com/example/Entity1.hbm.xml"/> <mapping resource="com/example/Entity2.hbm.xml"/> `...
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
通过DOM4J,我们可以方便地解析XML文件,获取投票数据,并将其展示在用户界面上,或者将用户投票结果持久化到XML文件中。 5. 投票管理系统的实现: 系统的核心功能包括投票创建、显示投票列表、用户投票以及结果...
至于“hibernate”,这是一个Java持久化框架,它简化了与关系数据库(如Oracle)的交互。学习者可以了解如何配置Hibernate,使其与Oracle数据库配合工作,实现对象关系映射(ORM),提高开发效率。 总的来说,...
主要的EJB类型有会话Bean(Session Beans)处理客户端交互,实体Bean(Entity Beans)代表持久化数据,以及消息驱动Bean(Message-Driven Beans)处理JMS消息。EJB容器管理了组件的生命周期、事务、安全性、并发控制...
它由Dataset、DataAdapter、Connection、Command、DataReader等组件构成,实现了离线数据处理和数据持久化。 2. AJAX(Asynchronous JavaScript and XML):AJAX不是一种单一的技术,而是一种利用JavaScript进行...
开发者需要配置一个`CommonsMultipartResolver`解析器来启用文件上传功能,并在控制器层处理`MultipartFile`对象,将文件内容存储到Oracle数据库中。 其次,**Struts2**是一个基于MVC设计模式的Action驱动的Web框架...
3. **Hibernate框架**:Hibernate是持久化层的解决方案,作为对象关系映射(Object-Relational Mapping, ORM)工具,它简化了Java应用程序对数据库的操作。Hibernate通过XML或注解定义对象与数据库表的映射关系,...
EJB有三种主要类型:会话bean(Session Beans)处理客户端请求,实体bean(Entity Beans)代表持久化的业务对象,消息驱动bean(Message-Driven Beans)处理JMS(Java Message Service)消息。EJB框架处理了诸如事务...
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。在本项目中,`TestWebInterface`可能包含MyBatis的Mapper接口和XML配置...
在这个项目中,Oracle作为数据源,存储和管理应用程序的数据。 **配置信息**:项目的配置文件通常包括Spring的bean配置(如`applicationContext.xml`)、SpringMVC的配置(如`servlet-context.xml`)、MyBatis的...
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,而Oracle则是一款广泛使用的高性能关系型数据库系统。本文将详细讲解如何利用MyBatis Generator工具生成Oracle数据库对应的映射文件。 ...