如何用Java操作XML文件

问题描述

毕业设计,要开发一个图书馆文献采购软件。现在把书目写入了XML文件,如下:<books><book><ISBN>978-7-03-020860-6</ISBN><三目号>00028090041</三目号><题名>概率论与数理统计教程</题名><第一责任说明>李子强</第一责任说明><出版社>科学出版社</出版社><出版地>北京</出版地><出版日期>2008.01</出版日期><开本>32开</开本><页数>364页</页数><定估价>CNY34.90</定估价><读者对象>本科生,研究生,教师</读者对象><主题词>概率论</主题词><内容简介>本书共分3篇,第1篇(第1-5章)为概率论部分,主要包括概率论的基本概念、一维和二维随机变量及其分析等内容,第2篇(第6-10章)为数理统计部分,主要包括数理统计的基本概念、参数估计、假设检验、回归分析与方差分析等内容;第3篇(第11、12章)为应用部分,包括概率论与数理统计在实际中的应用以及统计分析软件ASA的简单介绍与应用举例。</内容简介><分类号>O1</分类号><作品语种>chi</作品语种></book><book><ISBN>978-7-03-020338-0</ISBN><三目号>00028090199</三目号><题名>现代机械工程图学题典</题名><第一责任说明>黄丽</第一责任说明><出版社>科学出版社</出版社><出版地>北京</出版地><出版日期>2007.09</出版日期><开本>16开</开本><页数>176页</页数><定估价>CNY19.00</定估价><读者对象>本科生,研究生,教师</读者对象><主题词>画法几何,习题辅导</主题词><内容简介>全书在习题选编上,除画法几何部分建立和巩固空间想像力方面的训练,同时还加强了对基本形体、基本组合体空间想像力方面的训练,充分提高和培养读者的分析与空间想像力,在些基础上通过对机件的表达方法,零件图和装配图的练习进一步提高制图的能力。</内容简介><分类号>TH</分类号><作品语种>chi</作品语种></book><book><ISBN>978-7-03-020504-9</ISBN><三目号>00028090280</三目号><题名>生活垃圾管理与处理技术</题名><第一责任说明>薛强,陈朱蕾</第一责任说明><出版社>科学出版社</出版社><出版地>北京</出版地><出版日期>2007.12</出版日期><开本>16开</开本><页数>348页</页数><定估价>CNY120.00</定估价><读者对象>高校师生</读者对象><主题词>环境</主题词><内容简介>本书介绍了城市生活垃圾管理与处理的政策法规。全书分为上下两篇,分别为综述与研究、技术与应用、附录摘编了相应的政策与法规。</内容简介><分类号>X</分类号><作品语种>chi</作品语种></book></books>现在要求筛选,将开本小于16开的书删除,然后将新的书单写入新的XML文件。请问用Java语言如何实现?

解决方案

解决方案二:
Dom4j
解决方案三:
jdomdom4jjaximportjava.io.File;importjava.io.IOException;importjava.util.List;importorg.dom4j.DocumentException;importorg.dom4j.io.SAXReader;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.JDOMException;importorg.jdom.input.SAXBuilder;publicclassJdom{publicstaticvoidmain(String[]args){Longlasting=System.currentTimeMillis();SAXBuilderreader=newSAXBuilder();Documentdoc=null;try{doc=(Document)reader.build(newFile("D:\workspace\test\src\clothes.xml"));}catch(JDOMExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}Elementaa=doc.getRootElement();Elementbb;Listall=aa.getChildren();for(inti=0;i<all.size();i++){bb=(Element)all.get(i);System.out.print(bb.getChildText("店名"));}}}

importjava.io.File;importjava.util.Iterator;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;publicclassDom4j{publicstaticvoidmain(String[]args){SAXReaderreader=newSAXReader();Filef=newFile("D:\workspace\test\src\clothes.xml");Documentdoc=null;try{doc=reader.read(f);}catch(DocumentExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}Elementroot=doc.getRootElement();Elementfoo;for(Iteratori=root.elementIterator("服装店");i.hasNext();){foo=(Element)i.next();System.out.print(foo.elementText("店名")+"");System.out.print(foo.elementText("老板")+"");System.out.print(foo.elementText("地址")+"");System.out.print(foo.elementText("规模")+"");System.out.println();}}}

解决方案四:
真有空...路过吧
解决方案五:
引用2楼ymdcr的回复:

jdomdom4jjaxJavacodeimportjava.io.File;importjava.io.IOException;importjava.util.List;importorg.dom4j.DocumentException;importorg.dom4j.io.SAXReader;importorg.jdom.Documen……

up!
解决方案六:

解决方案七:
你参考一下这个吧。------------students.xml------------------<?xmlversion="1.0"?><students><studentid="1"age="20"gender="1">zhangsan</student><studentid="2"age="21"gender="2">lisi</student></students>-------------XMLParser--------------importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importorg.jdom.Attribute;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.JDOMException;importorg.jdom.input.SAXBuilder;importorg.jdom.output.Format;importorg.jdom.output.XMLOutputter;/***XML解析*http://www.juheit.com*/publicclassXMLParser{/***读XML文件到内存*/publicDocumentreadXML(StringfileName){try{SAXBuildersaxb=newSAXBuilder();returnsaxb.build(newFile(fileName));}catch(JDOMExceptionjde){jde.printStackTrace();}catch(IOExceptionjde){jde.printStackTrace();}returnnull;}/***写Document到文件中*/publicvoidwriteXMLTOFile(Documentdoc,StringfileName){try{XMLOutputterxo=newXMLOutputter(Format.getPrettyFormat());xo.output(doc,newFileWriter(newFile(fileName)));}catch(IOExceptionjde){jde.printStackTrace();}}/***查询所有student的name*/publicListgetStudentNameList(Documentdoc){//得到根元素Elementroot=doc.getRootElement();System.out.println("root:"+root);//定义目标ListListtargetList=newArrayList();//取得根元素的孩子ListstudentElementList=root.getChildren("student");if(studentElementList!=null){//进行迭代IteratorstudentElementIterator=studentElementList.iterator();while(studentElementIterator.hasNext()){ElementstudentElement=(Element)studentElementIterator.next();//取得属性Attributeattr=studentElement.getAttribute("age");System.out.println(attr.getName()+":"+attr.getValue());//取得元素的TextStringstudentName=studentElement.getText();targetList.add(studentName);}}returntargetList;}/***直接创建文档树*/publicDocumentcreateDocument(){//创建根元素Elementroot=newElement("app");Documentdoc=newDocument(root);returndoc;}/***添加一个student元素*/publicvoidinsertStudentElement(Documentdoc,Stringname,intage,intid,intgender){//得到根元素Elementroot=doc.getRootElement();System.out.println("root:"+root);//创建student元素ElementstudentElement=newElement("student");//添加到根root.addContent(studentElement);//设置名字studentElement.setText(name);//创建Attribute集合ListattrList=newArrayList();//设置属性Attributeattr=newAttribute("age",""+age);attrList.add(attr);attr=newAttribute("id",""+id);attrList.add(attr);attr=newAttribute("gender",""+gender);attrList.add(attr);studentElement.setAttributes(attrList);}/***复制添加一个student元素*/publicvoidcopyStudentElementToDocument(Documentdoc){//得到根元素Elementroot=doc.getRootElement();System.out.println("root:"+root);//获得第一个元素ElementfirstStudentElement=root.getChild("student");//复制元素ElementcopiedStudentElement=(Element)firstStudentElement.clone();copiedStudentElement.setText("zhaoliu");//修改namecopiedStudentElement.getAttribute("id").setValue("4");//修改idroot.addContent(copiedStudentElement);//添加到树}/***修改指定的学生姓名*/publicvoidupdateStudentNameByStudentId(Documentdoc,intid,Stringname){//得到根元素Elementroot=doc.getRootElement();System.out.println("root:"+root);//定义目标学生ElementtargetElement=null;//取得根元素的孩子ListstudentElementList=root.getChildren("student");if(studentElementList!=null){//进行迭代IteratorstudentElementIterator=studentElementList.iterator();while(studentElementIterator.hasNext()){ElementstudentElement=(Element)studentElementIterator.next();//取得属性Attributeattr=studentElement.getAttribute("id");System.out.println(attr.getName()+":"+attr.getValue());if(attr.getValue()!=null&&attr.getValue().trim().equals(""+id)){targetElement=studentElement;break;}}}if(targetElement!=null){targetElement.setText(name);}}/***删除指定的学生*/publicvoiddeleteStudentElementByStudentId(Documentdoc,intid){//得到根元素Elementroot=doc.getRootElement();System.out.println("root:"+root);//定义目标学生ElementtargetElement=null;//取得根元素的孩子ListstudentElementList=root.getChildren("student");if(studentElementList!=null){//进行迭代IteratorstudentElementIterator=studentElementList.iterator();while(studentElementIterator.hasNext()){ElementstudentElement=(Element)studentElementIterator.next();//取得属性Attributeattr=studentElement.getAttribute("id");System.out.println(attr.getName()+":"+attr.getValue());if(attr.getValue()!=null&&attr.getValue().trim().equals(""+id)){targetElement=studentElement;break;}}}root.removeContent(targetElement);}publicstaticvoidmain(String[]args){//读XMLDocumentdoc=newXMLParser().readXML("students.xml");System.out.println("doc:"+doc);//添加元素newXMLParser().insertStudentElement(doc,"wangwu",24,3,1);//复制元素并添加到树newXMLParser().copyStudentElementToDocument(doc);//修改元素newXMLParser().updateStudentNameByStudentId(doc,2,"mada");//删除指定的元素newXMLParser().deleteStudentElementByStudentId(doc,3);//写XMLnewXMLParser().writeXMLTOFile(doc,"studentinfo.xml");System.out.println(newXMLParser().getStudentNameList(doc));//直接输出成字符串的形式StringdocStr=newXMLOutputter().outputString(doc);System.out.println("docStr:"+docStr);}}
解决方案八:
路过帮顶。。。
解决方案九:
JAVA网www.shlisa.com
解决方案十:
sax,dom
解决方案十一:
Thinkinginjava作者推荐xom

时间: 2024-11-02 13:21:16

如何用Java操作XML文件的相关文章

如何用Java对XML文件进行Schema校验,Schema文件用的是微软格式

问题描述 schema文件采用的是微软格式,非W3标准格式<Schemaname="po-schema"xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-microsoft-com:datatypes"> 解决方案 解决方案二:<appxmlns="x-schema:schemaName.xml">解决方案三:引用1楼just

JDOM操作XML文件(法老修正版)

dom|xml 原文:JDOM操作XML文件地址:http://www.jspcn.net/htmlnews/200120272.html---------------------------------------------------------------------------    这篇文章讲的不错~把JDOM的基本操作实例化了,不过由于当时的作者用的JDOM版本还比较陈旧,所以部分代码会编译出错!支持中文也不好!所以,法老在原作者的基础上对程序做了修改!休正了编译出错以及中文乱码的

DOM操作XML文件

使用DOM方式操作XML文件,即是和DOM树打交道的过程:在构建XML文件时,首先构建一棵DOM树,然后将该树状结构写成XML文件:在解析XML文件时,首先将源XML文件解析成一棵DOM树,然后遍历这棵DOM树.或从DOM树中查找需要的信息. 关于DOM树中节点类型.不同节点具有的接口.特性.限制等信息可以参考<DOM树节点解析>,本文只关注如何构建XML文件与解析XML文件.在构建和解析XML文件中,都以w3school中的books.xml文件的内容为例: <?xml version

java解析xml文件多个线程同时访问时内存溢出

问题描述 java解析xml文件多个线程同时访问时内存溢出,代码如下:解析的xml文件大小大概2M-10M,该怎么解决呢? String sourceFile = ConfigReader.get("data.store.path") + article.getSourceFile();org.dom4j.Document document = null;FileInputStream fin = null;try {fin = new FileInputStream(new File

JAVA操作XML实例分析_java

本文实例讲述了JAVA操作XML的方法.分享给大家供大家参考.具体如下: java代码如下: 复制代码 代码如下: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.w3c.dom.*; import org.xml.sax.SAXException; import javax.xml.

ASP通过XMLDom在服务器端操作XML文件的主要方法和实现。

dom|xml|服务器 对于小数据量,xml文件在检索更新上于ACCESS有很多优势. 我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定.(http://stone.yesku.net) 下面说一下创建,查询,修改等对xml操作的主要方法 '创建DOM对象set objDom=server.CreateObject("MicroSoft.XMLDom") '取得xm

ASP通过XMLDom在服务器端操作XML文件的主要方法和实现

dom|xml|服务器 对于小数据量,xml文件在检索更新上于ACCESS有很多优势. 我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定. 下面说一下创建,查询,修改等对xml操作的主要方法 '创建DOM对象set objDom=server.CreateObject("MicroSoft.XMLDom") '取得xml数据'方法1 取得xml文件的xml数据  o

JavaScript操作XML文件之XML读取方法

 本文实例讲述了JavaScript操作XML文件之XML读取方法.分享给大家供大家参考.具体分析如下: 假设我们现在要读取下面的 info.xml 文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?xml version="1.0" encoding="gb2312"?> <root> <data id="1"> <name

使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值

问题描述 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件中节点的数据值. 那位大神知道,如果有代码就更好了. 谢谢 解决方案 QT XML文件 修改节点修改XML文件的节点属性值