《XML技术及应用》实验报告.docx

上传人:b****7 文档编号:26362598 上传时间:2023-06-18 格式:DOCX 页数:15 大小:63.31KB
下载 相关 举报
《XML技术及应用》实验报告.docx_第1页
第1页 / 共15页
《XML技术及应用》实验报告.docx_第2页
第2页 / 共15页
《XML技术及应用》实验报告.docx_第3页
第3页 / 共15页
《XML技术及应用》实验报告.docx_第4页
第4页 / 共15页
《XML技术及应用》实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

《XML技术及应用》实验报告.docx

《《XML技术及应用》实验报告.docx》由会员分享,可在线阅读,更多相关《《XML技术及应用》实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

《XML技术及应用》实验报告.docx

《XML技术及应用》实验报告

 

《XML技术及应用》实验报告

 

学生姓名:

学生学号:

指导教师:

实验成绩:

一、实验内容:

1、通过Java编程实现对“通讯录”的XML文档的解析,并把解析结果存到数据库的表中。

2、进一步实现相反的过程,即将数据库表的内容读出来,并将其转化为XML文件存储起来。

2、XML文档代码

Student.xml

xmlversion="1.0"encoding="GB2312"?

>

Jimmey

台湾台北

011-2857

华晨宇

湖北武汉

1809210

Victorian

上海

725120

尼坤

韩国首尔

9218337

3、对student.xml进行解析

1、配置Access数据库

控制面板----系统和安全------管理工具-----数据源(ODBC)-----系统DSN-----添加Access驱动程序-----填写数据源名、路径等。

2、Java代码

ConnPara.java

publicclassConnPara{

StringdbClass=null;

Stringurl=null;

Stringusername=null;

Stringpassword=null;

publicConnPara(){};

publicConnPara(StringpdbClass,Stringpurl,Stringpusername,Stringppassword){

dbClass=pdbClass;

url=purl;

username=pusername;

password=ppassword;

}

publicStringgetDbClass(){returndbClass;}

publicStringgetUrl(){returnurl;}

publicStringgetUsername(){returnusername;}

publicStringgetPassword(){returnpassword;}

publicvoidsetDbClass(Stringstr){dbClass=str;}

publicvoidsetUrl(Stringstr){url=str;}

publicvoidsetUsername(Stringstr){username=str;}

publicvoidsetPassword(Stringstr){password=str;}

}

Jiexi.java

importjavax.xml.parsers.*;

importjava.awt.TextArea;

importjava.io.*;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

importjava.sql.Statement;

importorg.w3c.dom.*;

publicclassJiexi{

publicstaticvoidmain(String[]args)throwsException{

StringName,Sex,Address,Phone;

Connectioncon=null;

Statementsql;

DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();

factory.setIgnoringElementContentWhitespace(true);

//获取DOM解析器

DocumentBuilderbuilder=factory.newDocumentBuilder();

//解析XML文档,并获取该XML文档对应的Document

Documentdoc=builder.parse(newFile("student.xml"));

//获得根节点的方法,getDocumentElement

ElementbookList=doc.getDocumentElement();

//获取根元素所包含的所有“计算机书籍”子元素,

//如果传入*作为参数,可获取所有子元素

NodeListnodeList=bookList.getElementsByTagName("student");

//遍历每个子元素

System.out.println("XML文件开始解析");

//循环输出每一个学生成绩

for(inti=0;i

//当前student元素

ElementelmtStudent=(Element)nodeList.item(i);

//利用父子关系获取子节点

NodeListnlCurrent=elmtStudent

.getElementsByTagName("name");

Name=nlCurrent.item(0).getFirstChild().getNodeValue();

//读取到姓名节点的值

System.out.println("姓名:

"+nlCurrent.item(0)

.getFirstChild().getNodeValue());

//利用父子关系获取子节点

nlCurrent=elmtStudent.getElementsByTagName("sex");

//读取到性别节点的值

Sex=nlCurrent.item(0).getFirstChild().getNodeValue();

System.out.println("性别:

"+nlCurrent.item(0)

.getFirstChild().getNodeValue());

//再次获取多个课程节点

nlCurrent=elmtStudent.getElementsByTagName("address");

//读取到性别节点的值

Address=nlCurrent.item(0).getFirstChild().getNodeValue();

System.out.println("地址:

"+nlCurrent.item(0)

.getFirstChild().getNodeValue());

//再次获取多个课程节点

nlCurrent=elmtStudent.getElementsByTagName("phone");

//读取到性别节点的值

Phone=nlCurrent.item(0).getFirstChild().getNodeValue();

System.out.println("电话:

"+nlCurrent.item(0)

.getFirstChild().getNodeValue());

//再次获取多个课程节点

System.out.println("---------------------");

try{

con=DriverManager.getConnection("jdbc:

odbc:

hcy","","");

sql=con.createStatement();

Stringrecode="("+"'"+Name+"'"+","+"'"+Sex+"'"+","

+"'"+Address+"'"+","+Phone+")";

Stringinsert1="INSERTINTOtongxunluVALUES"+recode;

sql.executeUpdate(insert1);

}

finally

{

con.close();

}

}

}

}

3、运行结果

4、初始数据库状态

5、导入数据之后的数据库状态

4、把数据库中数据导出,写成XML

1、Java代码

ConAccess.java

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

/**

*@authorassasa@version1.0@serial

*/

publicclassConAccess{

/**

*

*/

Connectioncon;

Statementst;

ResultSetrs,rs1;

publicConAccess(StringtableName,StringuserName,Stringpassword){

Stringurl="jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName="

+tableName;

try{

con=DriverManager.getConnection("jdbc:

odbc:

hcy","","");

st=con.createStatement();

}catch(Exceptione){

System.out.print("连接数据库出错了"+e.toString());

e.printStackTrace();//TODO:

handleexception

}

}

publicConnectiongetConnect(){

returncon;

}

publicStatementgetStatement(){

returnst;

}

publicvoidconToSqlClose(){

if(st!

=null){

try{

st.close();

}catch(Exceptione){

//TODO:

handleexception

}

}

if(con!

=null){

try{

con.close();

}catch(SQLExceptione){

//TODO自动生成catch块

e.printStackTrace();

}

}

}

publicstaticvoidmain(String[]args){

ResultSetrs;

Stringsql="select*fromtongxunlu";

ConAccessthisClass=newConAccess("tongxunlu","","");

Statementst=thisClass.getStatement();

try{

rs=st.executeQuery(sql);

while(rs.next()){

System.out.println("name:

"+rs.getString

(1));

System.out.println("sex:

"+rs.getString

(2));

System.out.println("address:

"+rs.getInt(3));

System.out.println("phone:

"+rs.getInt(4));

}

}catch(SQLExceptione){

e.printStackTrace();

}finally{

thisClass.conToSqlClose();

}

}

}

DataToXml.java

importjava.io.BufferedWriter;

importjava.io.FileWriter;

importjava.sql.ResultSet;

importjava.sql.Statement;

publicclassDataToXml{

ConAccesscontosql;

Statementst;

ResultSetrs;

privateStringstrXmlFileName;

publicDataToXml(){

strXmlFileName=newString();

contosql=newConAccess("tongxunlu","","");

}

privatevoidcreateXml(StringstrXml){

StringSQL="select*fromtongxunlu";

strXmlFileName=strXml;

String[]strTemp=newString[4];

try{

st=contosql.getStatement();

rs=st.executeQuery(SQL);

BufferedWriteroutXml=newBufferedWriter(newFileWriter(strXmlFileName));

outXml.write("

xmlversion=\"1.0\"encoding=\"gb2312\"?

>");

outXml.newLine();

outXml.write("");

while(rs.next()){

strTemp[0]=rs.getString

(1);

strTemp[1]=rs.getString

(2);

strTemp[2]=""+rs.getString(3);

strTemp[3]=""+rs.getString(4);

outXml.newLine();

outXml.write("");

outXml.newLine();

outXml.write(""+strTemp[0]+"");

outXml.newLine();

outXml.write(""+strTemp[1]+"");

outXml.newLine();

outXml.write("

"+strTemp[2]+"
");

outXml.newLine();

outXml.write(""+strTemp[3]+"");

outXml.newLine();

outXml.write("");

}

outXml.newLine();

outXml.write("");

outXml.flush();

}catch(Exceptione){

e.printStackTrace();

}finally{

contosql.conToSqlClose();

}

}

publicstaticvoidmain(String[]args){

StringxmlName="Newtongxunlu.xml";

DataToXmlthisClass=newDataToXml();

thisClass.createXml(xmlName);

}

}

2、运行结果

Newtongxunlu.xml

xmlversion="1.0"encoding="gb2312"?

>

Jimmey

台湾台北

-2846

华晨宇

湖北武汉

1809210

Victorian

上海

725120

尼坤

韩国首尔

9218337

5、实验小结

通过这次实验,又重新复习了一下Java编程语言,也对于JDBC连数据库有了更深层次的理解,把数据库中的内容、xml的内容以及Java语言结合到了一起。

在实验过程中也遇到了一些问题,在xml解析过程中,开始的时候是把各文本内容解析出来,但是在连数据库的时候,没办法把记录一条条的输入到数据库中。

所以后来在解析的时候,把内容按照节点一个个解析出来,并且复制给一个个新声明的变量中,这样再后来的导入数据库过程就方便了。

还有就是在传值给数据库的时候,开始忘记了每次传完要关掉连接,否则最后导入的都是第一条记录。

在把数据从数据库中导出生成xml的时候,也要先连接数据库,读取一个个的节点,然后复制给xml中的节点。

通过这次实验,也看到了自己在Java语言运用方面存在的不足,希望以后自己可以多动手操作,提高自己编程能力。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1