怎么在java中使用DOM4J对XML文件进行操作

这篇文章给大家介绍怎么在java中使用DOM4J对XML文件进行操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

DOM4j.java

怎么在java中使用DOM4J对XML文件进行操作

packagecom.zc.homeWork19;

importjava.io.FileWriter;
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;

importorg.dom4j.Document;
importorg.dom4j.Element;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;

importcom.zc.homeWork19.Book;

publicclassDOM4j{
publicstaticvoidmain(Stringargs[])throwsException{
/**
*第一步,得到document对象。
*/
Documentdocument=getDocument();

/**
*第二步,修改得到的document对象
*/

/**
*首先,读取功能
*/
List<Book>books=readAllElementsFromXMLDocument(document);
traverseBooks(books);

/**
*其次,修改功能修改内容:将id为b002的元素的title改为JavaCore,Price改为100.01
*/
ModifyInformationOfXMLDocument(document);

/**
*再者:实现删除功能删除内容:删除掉id为book1的元素内容。
*/
deleteInformationOfXMLDocument(document);

/**
*最后:实现添加i新元素功能添加内容:id为book3,title内容为:凤姐玉照,price内容为10000.00
*/
addNewBookToXMLDocument(document);

/**
*第三步:将得到的document对象持久化保存到硬盘(XML)
*/
writeToNewXMLDocument(document);
}

/**
*实现了添加新节点:book的功能
*
*@paramdocument
*/
privatestaticvoidaddNewBookToXMLDocument(Documentdocument){
Elementroot=document.getRootElement();
ElementnewBook=root.addElement("book");
newBook.addAttribute("id","book3");
Elementtitle=newBook.addElement("title");
title.setText("凤姐玉照");
Elementprice=newBook.addElement("price");
price.setText("10000.01");
}

/**
*该方法实现了使用dom4j的删除元素的功能
*
*@paramdocument
*/
privatestaticvoiddeleteInformationOfXMLDocument(Documentdocument){
Elementroot=document.getRootElement();
for(Iteratorit=root.elementIterator();it.hasNext();){
Elementbook=(Element)it.next();
Stringid=book.attributeValue("id");
if("book1".equals(id)){
Elementparent=book.getParent();
parent.remove(book);
}
}
}

/**
*该方法的作用是修改document中的内容将id为b002的元素的title改为JavaCore,Price改为100.01
*
*@paramdocument
*/
privatestaticvoidModifyInformationOfXMLDocument(Documentdocument){
Elementroot=document.getRootElement();
Listbooks=root.elements();
for(inti=0;i<books.size();i++){

Elementbook=(Element)books.get(i);
if("book2".equals(book.attributeValue("id"))){

for(Iteratorit=book.elementIterator();it.hasNext();){
Elementnode=(Element)it.next();
Stringtype=node.getName();
if("title".equals(type)){
node.setText("JAVACore");
}
if("price".equals(type)){
node.setText("100.01");
}
}
}
}

try{
writeToNewXMLDocument(document);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

/**
*遍历集合
*
*@parambooks
*/
privatestaticvoidtraverseBooks(List<Book>books){
for(Iterator<Book>iterator=books.iterator();iterator.hasNext();){
Bookbook=iterator.next();
System.out.println(book);
}
}

/**
*该方法实现了对xml文档的读取功能
*
*@paramdocument
*@return
*/
privatestaticList<Book>readAllElementsFromXMLDocument(Documentdocument){
List<Book>books=newArrayList<Book>();
Elementroot=document.getRootElement();
Listlist=root.elements();
for(inti=0;i<list.size();i++){
Elementbook=(Element)list.get(i);
Bookb=newBook();
Stringid=book.attributeValue("id");
Listll=book.elements();
b.setId(id);
System.out.println(id);
for(intj=0;j<ll.size();j++){
Elementelement=(Element)ll.get(j);
if("title".equals(element.getName())){
Stringtitle=element.getText();
b.setTitle(title);
System.out.println(title);
}
if("price".equals(element.getName())){
Stringprice=element.getText();
doublep=Double.parseDouble(price);
b.setPrice(p);
System.out.println(price);
}
}
books.add(b);
}
returnbooks;
}

/**
*通过document对象将内存中的dom树保存到新的xml文档。
*
*@paramdocument
*@throwsException
*/
privatestaticvoidwriteToNewXMLDocument(Documentdocument)
throwsException{

XMLWriterwriter=newXMLWriter(newFileWriter(
"src/com/zc/homeWork19/newbooks.xml"));
writer.write(document);
writer.close();
}

/**
*该方法用于得到document对象。
*
*@return
*@throwsException
*/
privatestaticDocumentgetDocument()throwsException{
SAXReadersr=newSAXReader();
Documentdocument=sr.read("src\\books.xml");
returndocument;
}
}

Book.java

packagecom.zc.homeWork19;

publicclassBook{
publicStringtitle;
publicdoubleprice;
publicStringid;

publicStringgetTitle(){
returntitle;
}

publicvoidsetTitle(Stringtitle){
this.title=title;
}

publicdoublegetPrice(){
returnprice;
}

publicvoidsetPrice(doubleprice){
this.price=price;
}

publicStringgetId(){
returnid;
}

publicvoidsetId(Stringid){
this.id=id;
}

publicStringtoString(){
return"图书ISBN为:"+id+"书名为:"+title+"价格为:"+price;
}
}

book.xml

<?xmlversion="1.0"encoding="UTF-8"?>
<books>
<bookid="book1">
<title>JAVA编程思想</title>
<price>80.00</price>
</book>
<bookid="book2">
<title>JAVA编程理论</title>
<price>100.00</price>
</book>
</books>

关于怎么在java中使用DOM4J对XML文件进行操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2021-03-26 01:49:51
收藏
分享
海报
0 条评论
166
上一篇:Pycharm与Anaconda怎么在Linux中使用 下一篇:怎么在spring boot中利用sonarqube检查技术债务
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码