XML期末大作業(yè)實(shí)驗(yàn)報(bào)告_第1頁
XML期末大作業(yè)實(shí)驗(yàn)報(bào)告_第2頁
XML期末大作業(yè)實(shí)驗(yàn)報(bào)告_第3頁
XML期末大作業(yè)實(shí)驗(yàn)報(bào)告_第4頁
XML期末大作業(yè)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

大連海事大學(xué)本科生實(shí)驗(yàn)報(bào)告《XML技術(shù)及其應(yīng)用》實(shí)驗(yàn)報(bào)告院(系):交通運(yùn)輸管理學(xué)院專業(yè)班級:電子商務(wù)2011級1班課程名稱:XML技術(shù)及其應(yīng)用姓名:周慧敏學(xué)號:2220113494指導(dǎo)教師:翟軍完成日期:2013年11

實(shí)驗(yàn):解析與生成XML文件實(shí)驗(yàn)名稱:編程實(shí)現(xiàn)解析與生成XML文件的算法實(shí)驗(yàn)?zāi)康模?.理解生成與解析XML文件的算法原理及其應(yīng)用。2.掌握該算法的程序?qū)崿F(xiàn)過程。3.學(xué)會使用該算法對XML文件進(jìn)行解析和生成XML文件。4.知道如何將eclipse與access數(shù)據(jù)庫連接,學(xué)會運(yùn)用SQL算法將數(shù)據(jù)導(dǎo)入和導(dǎo)出數(shù)據(jù)庫。實(shí)驗(yàn)要求:通過Java編程實(shí)現(xiàn)對“通訊錄”的XML文檔的解析,并把解析結(jié)果存到數(shù)據(jù)庫的表中。進(jìn)一步實(shí)現(xiàn)相反的過程,即將數(shù)據(jù)庫表的內(nèi)容讀出來,并將其轉(zhuǎn)化為XML文件存儲起來。四、實(shí)驗(yàn)內(nèi)容與步驟:1.

算法流程圖:開始開始調(diào)用contact.xml文件并解析將解析后得到的數(shù)據(jù)存入與eclipse連接的access里名為db1的數(shù)據(jù)庫的contact表中導(dǎo)出存在access數(shù)據(jù)庫中的數(shù)據(jù)使用所得的數(shù)據(jù)生成新的contact1.xml文件結(jié)束2.實(shí)驗(yàn)步驟:(1).調(diào)用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).將解析后得到的數(shù)據(jù)存入access數(shù)據(jù)庫里的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).導(dǎo)出存在access數(shù)據(jù)庫中的數(shù)據(jù)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).使用所得的數(shù)據(jù)生成新的contact1.xml文件try{ @SuppressWarnings("resource") BufferedWriterchangetoXml=newBufferedWriter(newFileWriter(xmlName)); changetoXml.write("<?xmlversion=\"1.0\"encoding=\"gb2312\"?>"); changetoXml.newLine(); changetoXml.write("<contact>"); for(intid=1;id<3;id++){ useru=Connect.getInformation(id); changetoXml.newLine(); changetoXml.write("<user>"); changetoXml.newLine(); changetoXml.write("<name>"+u.getname()+"</name>"); changetoXml.newLine(); changetoXml.write("<phone>"+u.getphone()+"</phone>"); changetoXml.newLine(); changetoXml.write("<address>"+u.getaddress()+"</address>"); changetoXml.newLine(); changetoXml.write("</user>"); } changetoXml.newLine(); changetoXml.write("</contact>"); changetoXml.flush(); }五、實(shí)驗(yàn)結(jié)果:1.contact.xml文件:2.解析contact.xml文件后的結(jié)果:3.數(shù)據(jù)存入access數(shù)據(jù)庫中的contact表之后:4.生成的新的xml文件contact1.xml:六、實(shí)驗(yàn)總結(jié):通過本次實(shí)驗(yàn),了解并明白了解析與生成xml文件的算法,同時(shí)也掌握了連接數(shù)據(jù)庫的方法,并且學(xué)會了使用SQL語句。在編程的過程中,遇到不明白的地方都會向同學(xué)請教,或者尋求搜索引擎的幫助,很多問題都逐個(gè)地解決了。源代碼:

Control.javapackagecontact;publicclassControl{ publicstaticvoidmain(String[]args)throwsException{ System.out.println("解析contact的xml文件后的結(jié)果:"); DomParsedomparse=newDomParse(); domparse.Dom(); System.out.println("從access數(shù)據(jù)庫中調(diào)用數(shù)據(jù)后,生成的新的xml文件contact1:"); StringxmlName="contact1.xml"; GeneratethisClass=newGenerate(); thisClass.createXml(xmlName); }}Connect.javapackagecontact;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.javapackagecontact;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;i<nodeList.getLength();i++){ useru=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.javapackagecontact;publicclassuser{ intid;Stringname; Stringphone; Stringaddress; publicvoidsetid(intid){ this.id=id; } publicintgetid(){ returnthis.id; } publicvoidsetname(Stringname){ =name; } publicStringgetname(){ return; } publicvoidsetphone(Stringphone){ this.phone=phone; } publicStringgetphone(){ returnthis.phone; } publicvoidsetaddress(Stringaddress){ this.address=address; } publicStringgetaddress(){ returnthis.address; }}Generate.javapackagecontact;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));

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論