/*
* Created on 2006-8-13
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.hotmail.scbit.SAX;
import java.util.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
//解析类
public class DBContactsHandler extends DefaultHandler
{
Contacts contact = null;
private Stack tagsStack=new Stack();
private Vector contacts = new Vector();
private String id;
private String name;
private String project;
private String telephone;
private String email;
private String msn;
private String remark;
public Vector getContacts()
{
return this.contacts;
}
public void startElement(String uri,String localName,
String qName,Attributes attrs)
throws SAXException
{
tagsStack.push(qName);
}
public void characters(char[] ch,int start,int length) throws SAXException
{
String tag=(String)tagsStack.peek();
if(tag.equals("id"))
{
this.id=new String(ch,start,length);
}
if(tag.equals("name"))
{
this.name=new String(ch,start,length);
}
if(tag.equals("project")){
this.project = new String(ch,start,length);
}
if(tag.equals("telephone"))
{
this.telephone=new String(ch,start,length);
}
if(tag.equals("email"))
{
this.email=new String(ch,start,length);
}
if(tag.equals("msn")){
this.msn=new String(ch,start,length);
}
if(tag.equals("remark")){
this.remark=new String(ch,start,length);
}
}
public void endElement(String uri,String localName,String qName) throws SAXException
{
String tag=(String)tagsStack.pop();
if(tag.equalsIgnoreCase("employe"))
{
contact = new Contacts(
Integer.parseInt(this.id),
this.name,
this.project,
this.telephone,
this.email,
this.msn,
this.remark);
contacts.add(contact);
System.out.println(this.id);
System.out.println(this.name);
System.out.println(this.project);
System.out.println(this.telephone);
System.out.println(this.email);
System.out.println(this.msn);
System.out.println(this.remark);
}
}
public void endDocument() throws SAXException
{
System.out.println("查找完毕");
}
}
//文档同上
// 将xml文档放在解析器里面进行解析
package com.hotmail.scbit.SAX;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.util.Vector;
public class DBContactsParser
{
private final File file = new File("E://Java Object//contacts.xml");
Vector contacts = new Vector();
private void parse()
{
try
{
DBContactsHandler handler = new DBContactsHandler();
SAXParserFactory spFactory = SAXParserFactory.newInstance();
SAXParser sp = spFactory.newSAXParser();
sp.parse(file,handler);
contacts = handler.getContacts();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public Vector getContactInfo()
{
this.parse();
return this.contacts;
}
}
package com.hotmail.scbit.DOM;
import java.sql.*;
import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
public class XMLDocumenrtBuilder
{
//根据结果集生成XML文档
public static void tableinput(ResultSet rs,File XMLFile)
{
try
{
ResultSetMetaData rsda = rs.getMetaData();
int count = rsda.getColumnCount(); //
String ColumnName[] = new String[count]; //
int ColumnType[] = new int[count]; //
for(int i = 0;i < count; i ++)
{
ColumnName[i] = rsda.getColumnName(i+1);
ColumnType[i] = rsda.getColumnType(i+1);
System.out.println(ColumnName[i]);
System.out.println(ColumnType[i]);
}
DocumentBuilderFactory doc = DocumentBuilderFactory.newInstance();
DocumentBuilder docbuilder = doc.newDocumentBuilder();
//新建一个文本对象
Document xmldoc = docbuilder.newDocument();
Element clomnElement = null; //字段名
Element rowElement = null;//子元素名
Text text = null;//字段值
//建立根元素
Element employesNode = xmldoc.createElement("employees");
while(rs.next())
{
//建立子元素
rowElement = xmldoc.createElement("employe");
for(int i = 0;i < count ; i ++)
{
clomnElement = xmldoc.createElement(ColumnName[i]);
if(ColumnType[i] == 4)
{
text = xmldoc.createTextNode(String.valueOf(rs.getInt(i + 1)));
}
if(ColumnType[i] == 12)
{
text = xmldoc.createTextNode(String.valueOf(rs.getString(i + 1)));
}
clomnElement.appendChild(text);
rowElement.appendChild(clomnElement);
}
employesNode.appendChild(rowElement);
}
xmldoc.appendChild(employesNode);
TransformerFactory tarnsFactory = TransformerFactory.newInstance();
Transformer tarnsformer = tarnsFactory.newTransformer();
DOMSource xmlDomSource = new DOMSource(xmldoc);
StreamResult bookstarment = new StreamResult(XMLFile);
tarnsformer.transform(xmlDomSource,bookstarment);
System.out.println("tarnsformer createElement");
}
catch(Exception e)
{
e.printStackTrace();
}
}
//解析XML文档,保存到数据库中
public static void tableoutput(Connection con,File XMLFile)
{
PreparedStatement pst = null;
String Strsql = "insert into contacts values(?,?,?,?,?,?,?)";
int id = 0;
String name = null;
String project = null;
String telephone = null;
String email = null;
String msn = null;
String remark = null;
try
{
pst = con.prepareStatement(Strsql);
DocumentBuilderFactory documentFactory
= DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder
= documentFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(XMLFile);
Element employeElement = doc.getDocumentElement();
NodeList employeNode = employeElement.getChildNodes();
for(int i = 0 ; i < employeNode.getLength();i = i + 1)
{
NodeList stuNodeList = employeNode.item(i).getChildNodes();
for(int j = 0;j < stuNodeList.getLength();j = j + 1)
{
Element col = (Element)stuNodeList.item(j);
if(j == 0)
{
id = Integer.parseInt(col.getChildNodes().item(0).getNodeValue());
}
if(j == 1)
{
name = col.getChildNodes().item(0).getNodeValue();
}
if(j == 2)
{
project =col.getChildNodes().item(0).getNodeValue();
}
if(j == 3)
{
telephone = col.getChildNodes().item(0).getNodeValue();
}
if(j == 4){
email = col.getChildNodes().item(0).getNodeValue();
}
if(j == 5){
msn = col.getChildNodes().item(0).getNodeValue();
}
if(j == 6){
remark = col.getChildNodes().item(0).getNodeValue();
}
}
pst.setInt(1,id);
pst.setString(2,name);
pst.setString(3,project);
pst.setString(4,telephone);
pst.setString(5, email);
pst.setString(6, msn);
pst.setString(7, remark);
pst.addBatch();
}
pst.executeBatch();
System.out.println("数据库执行完毕");
}
catch(Exception e)
{
e.printStackTrace();
System.out.println("bunengcharu:");
}
}
}
//xml文档
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<employees>
<employe>
<id>1</id>
<name>babnsdf</name>
<project>暂无</project>
<telephone>153********</telephone>
<email>gao@vip.sina.com</email>
<MSN>jun@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>2</id>
<name>student</name>
<project>标本库</project>
<telephone>137********</telephone>
<email>y@scbit.org</email>
<MSN>wwx@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>3</id>
<name>zhanzhan</name>
<project>HIS、LIS等综合查询</project>
<telephone>131********</telephone>
<email>tan@scbit.org</email>
<MSN>mose@msn.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>4</id>
<name>班拾红</name>
<project>病源体鉴定</project>
<telephone>133********</telephone>
<email>ban@yahoo.com.cn</email>
<MSN>ban@msn.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>5</id>
<name>吴桂强</name>
<project>暂无</project>
<telephone>136********</telephone>
<email>Vriu@hotmail.com</email>
<MSN>Vriu@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>6</id>
<name>zhaowu</name>
<project>分子分型</project>
<telephone>137********</telephone>
<email>jia@hotmail.com</email>
<MSN>jia@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>7</id>
<name>lisi</name>
<project>暂无</project>
<telephone>158********</telephone>
<email>liu@163.com</email>
<MSN>chn@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>8</id>
<name>zhangsan</name>
<project>暂无</project>
<telephone>137********</telephone>
<email>xian@gmail.com</email>
<MSN>ange@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>9</id>
<name>baijuyi</name>
<project>暂无</project>
<telephone>137********</telephone>
<email>a1a@163.com</email>
<MSN>a1-@163.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>10</id>
<name>wanganshi</name>
<project>暂无</project>
<telephone>137********</telephone>
<email>dug@tom.com</email>
<MSN>mes@hotmial.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>11</id>
<name>ouyangxiu</name>
<project>暂无</project>
<telephone>138********</telephone>
<email>chen@hotmail.com</email>
<MSN>chen@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>12</id>
<name>dupu</name>
<project>暂无</project>
<telephone>135********</telephone>
<email>xin@gmail.com</email>
<MSN>yanyan@yahoo.com.cn</MSN>
<reach>暂无备注</reach>
</employe>
<employe>
<id>13</id>
<name>libai</name>
<project>暂无</project>
<telephone>159********</telephone>
<email>papa@hotmail.com</email>
<MSN>papa@hotmail.com</MSN>
<reach>暂无备注</reach>
</employe>
</employees>
Java 解析xml的方法:DOM,SAX
XML数据处理与解析
最新推荐文章于 2025-03-30 10:01:58 发布
本文介绍了一种使用Java实现的XML文件解析方法,包括通过SAX解析器读取XML文件内容并存储为对象集合的过程,以及利用DOM构建XML文档并将数据库结果集转换成XML文件的方法。
997

被折叠的 条评论
为什么被折叠?



