XML期末大作业实验报告.docx
《XML期末大作业实验报告.docx》由会员分享,可在线阅读,更多相关《XML期末大作业实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
XML期末大作业实验报告
大连海事大学本科生实验报告
《XML技术及其应用》实验报告
院(系):
交通运输管理学院
专业班级:
电子商务2011级1班
课程名称:
XML技术及其应用
姓名:
周慧敏
学号:
2220113494
指导教师:
翟军
完成日期:
2013年11月27日
实验:
解析与生成XML文件
一、实验名称:
编程实现解析与生成XML文件的算法
二、实验目的:
1.理解生成与解析XML文件的算法原理及其应用。
2.掌握该算法的程序实现过程。
3.学会使用该算法对XML文件进行解析和生成XML文件。
4.知道如何将eclipse与access数据库连接,学会运用SQL算法将数据导入和导出数据库。
三、实验要求:
通过Java编程实现对“通讯录”的XML文档的解析,并把解析结果存到数据库的表中。
进一步实现相反的过程,即将数据库表的内容读出来,并将其转化为XML文件存储起来。
四、实验内容与步骤:
1. 算法流程图:
2.实验步骤:
(1).调用contact.xml文件并解析
try{
doc=builder.parse(newFile("contact.xml"));
}
catch(SAXExceptione){
e.printStackTrace();
}
NodeListnlCurrent=elmtuser.getElementsByTagName("name");
name=nlCurrent.item(0).getFirstChild().getNodeValue();
System.out.println("name:
"+nlCurrent.item(0).getFirstChild().getNodeValue());
u.setname(name);
(2).将解析后得到的数据存入access数据库里的contact表中
try{
Connectioncon=null;
Statementsql;
Connect.Store(u);
}
catch(SQLExceptione){
e.printStackTrace();
}
try
{
con=DriverManager.getConnection(url);
Statementsta=con.createStatement();
sta.executeUpdate(String.format("insertintocontact(id,name,phone,address)values(%d,'%s','%s','%s')",
u.getid(),u.getname(),u.getphone(),u.getaddress()));
}
(3).导出存在access数据库中的数据
try{
conn=DriverManager.getConnection(url);
Statementsta=conn.createStatement();
ResultSetresult=sta.executeQuery(String.format("select*fromcontactwhereid=%d",id));
if(result.next()){
useru=newuser();
u.setname(result.getString("name"));
u.setphone(result.getString("phone"));
u.setaddress(result.getString("address"));
returnu;
}
returnnull;
}
(4).使用所得的数据生成新的contact1.xml文件
try{
@SuppressWarnings("resource")
BufferedWriterchangetoXml=newBufferedWriter(newFileWriter(xmlName));
changetoXml.write("
xmlversion=\"1.0\"encoding=\"gb2312\"?
>");
changetoXml.newLine();
changetoXml.write("");
for(intid=1;id<3;id++){
useru=Connect.getInformation(id);
changetoXml.newLine();
changetoXml.write("");
changetoXml.newLine();
changetoXml.write(""+u.getname()+"");
changetoXml.newLine();
changetoXml.write(""+u.getphone()+"");
changetoXml.newLine();
changetoXml.write("
"+u.getaddress()+"");
changetoXml.newLine();
changetoXml.write("");
}
changetoXml.newLine();
changetoXml.write("");
changetoXml.flush();
}
五、实验结果:
1.contact.xml文件:
2.解析contact.xml文件后的结果:
3.数据存入access数据库中的contact表之后:
4.生成的新的xml文件contact1.xml:
六、实验总结:
通过本次实验,了解并明白了解析与生成xml文件的算法,同时也掌握了连接数据库的方法,并且学会了使用SQL语句。
在编程的过程中,遇到不明白的地方都会向同学请教,或者寻求搜索引擎的帮助,很多问题都逐个地解决了。
源代码:
Control.java
packagecontact;
publicclassControl{
publicstaticvoidmain(String[]args)throwsException{
System.out.println("解析contact的xml文件后的结果:
");
DomParsedomparse=newDomParse();
domparse.Dom();
System.out.println("从access数据库中调用数据后,生成的新的xml文件contact1:
");
StringxmlName="contact1.xml";
GeneratethisClass=newGenerate();
thisClass.createXml(xmlName);
}
}
Connect.java
packagecontact;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
publicclassConnect{
staticStringurl="jdbc:
odbc:
driver={MicrosoftAccessDriver(*.mdb)};DBQ=db1.mdb";
publicstaticvoidStore(useru)throwsSQLException{
Connectioncon=null;
try
{
con=DriverManager.getConnection(url);
Statementsta=con.createStatement();
sta.executeUpdate(String.format("insertintocontact(id,name,phone,address)values(%d,'%s','%s','%s')",
u.getid(),u.getname(),u.getphone(),u.getaddress()));
}
finally
{
con.close();
}
}
publicstaticusergetInformation(intid)throwsSQLException{
Connectionconn=null;
try{
conn=DriverManager.getConnection(url);
Statementsta=conn.createStatement();
ResultSetresult=sta.executeQuery(String.format("select*fromcontactwhereid=%d",id));
if(result.next()){
useru=newuser();
u.setname(result.getString("name"));
u.setphone(result.getString("phone"));
u.setaddress(result.getString("address"));
returnu;
}
returnnull;
}finally{
conn.close();
}
}
}
DomParse.java
packagecontact;
importjavax.xml.parsers.*;
importjava.io.*;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
importorg.w3c.dom.*;
importorg.xml.sax.SAXException;
publicclassDomParse{
publicvoidDom(){
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilderbuilder=null;
try{
builder=factory.newDocumentBuilder();
}
catch(ParserConfigurationExceptione){
e.printStackTrace();
}
Documentdoc=null;
try{
doc=builder.parse(newFile("contact.xml"));
}
catch(SAXExceptione){
e.printStackTrace();
}
catch(IOExceptione){
e.printStackTrace();
}
Stringname,phone,address;
Elementcontact=doc.getDocumentElement();
NodeListnodeList=contact.getElementsByTagName("user");
for(inti=0;iuseru=newuser();
u.setid((i+1));
Elementelmtuser=(Element)nodeList.item(i);
NodeListnlCurrent=elmtuser.getElementsByTagName("name");
name=nlCurrent.item(0).getFirstChild().getNodeValue();
System.out.println("name:
"+nlCurrent.item(0).getFirstChild().getNodeValue());
u.setname(name);
nlCurrent=elmtuser.getElementsByTagName("phone");
phone=nlCurrent.item(0).getFirstChild().getNodeValue();
System.out.println("phone:
"+nlCurrent.item(0).getFirstChild().getNodeValue());
u.setphone(phone);
nlCurrent=elmtuser.getElementsByTagName("address");
address=nlCurrent.item(0).getFirstChild().getNodeValue();
System.out.println("address:
"+nlCurrent.item(0).getFirstChild().getNodeValue());
u.setaddress(address);
try{
Connectioncon=null;
Statementsql;
Connect.Store(u);
}
catch(SQLExceptione){
e.printStackTrace();
}
}
}
}
user.java
packagecontact;
publicclassuser{
intid;
Stringname;
Stringphone;
Stringaddress;
publicvoidsetid(intid){
this.id=id;
}
publicintgetid(){
returnthis.id;
}
publicvoidsetname(Stringname){
this.name=name;
}
publicStringgetname(){
returnthis.name;
}
publicvoidsetphone(Stringphone){
this.phone=phone;
}
publicStringgetphone(){
returnthis.phone;
}
publicvoidsetaddress(Stringaddress){
this.address=address;
}
publicStringgetaddress(){
returnthis.address;
}
}
Generate.java
packagecontact;
importjava.io.BufferedWriter;
importjava.io.FileWriter;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassGenerate{
StringxmlName=newString();
publicvoidcreateXml(Strings){
xmlName=s;
try{
@SuppressWarnings("resource")
BufferedWriterchangetoXml=newBufferedWriter(newFileWriter(xmlName));
changetoXml.write("
xmlversion=\"1.0\"encoding=\"gb2312\"?
>");
changetoXml.newLine();
changetoXml.write("");
for(intid=1;id<3;id++){
useru=Connect.getInformation(id);
changetoXml.newLine();
changetoXml.write("");
changetoXml.newLine();
changetoXml.write(""+u.getname()+"");
changetoXml.newLine();
changetoXml.write(""+u.getphone()+"");
changetoXml.newLine();
changetoXml.write("
"+u.getaddress()+"");
changetoXml.newLine();
changetoXml.write("");
}
changetoXml.newLine();
changetoXml.write("");
changetoXml.flush();
}
catch(Exceptione){
e.printStackTrace();
}
finally{
}
}
}