《2022年使用DOMj解析xml文件整理 .pdf》由会员分享,可在线阅读,更多相关《2022年使用DOMj解析xml文件整理 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Xml文件: studentname 78 78 98 studentname 77 68 88 JAVA文件:import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHe
2、lper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /*DOM4j 对xml 文件的操作*操作 DOM4j 的时候注意要导入3个jar包,否则会报异常*dom4j - 1.6.1.jar*jaxen- 1.1 - beta - 6.jar*saxpath.jar*/publicclass ReaderDom4j 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
3、- - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - /*创建一个 xml 文件*/publicstaticvoid createxml() /使用 DocumentHelper 类创建一个文档实例。DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。Document document = DocumentHelper.createDocument(); /使用 addElement() 方法创建根元素 studentElement booksElement = document.
4、addElement(student); booksElement.addComment(first xml); /在 student 元素中使用 addElement() 方法增加 call 元素。 Element book1Elment = booksElement.addElement(call); /在call元素里增加 show 属性, show 属性的值是 yesbook1Elment.addAttribute(show, yes); /在 call 元素中使用 addElement() 方法增加 name 元素。Element book2Element = book1Elment
5、.addElement(name); /设置 name 标签的内容book2Element.setText(zhangsan); Element book3Element = book1Elment.addElement(English); book3Element.setText(78); Element book4Element = book1Elment.addElement(Chinese); book4Element.setText(78); Element book5Element = book1Elment.addElement(Japan); book5Element.setT
6、ext(98); book1Elment = booksElement.addElement(call); book1Elment.addAttribute(show, yes); book2Element = book1Elment.addElement(name); book2Element.setText(wangwu); book3Element = book1Elment.addElement(English); book3Element.setText(77); book4Element = book1Elment.addElement(Chinese); book4Element
7、.setText(68); book5Element = book1Elment.addElement(Japan); book5Element.setText(88); try /格式化输出 xml 文件,兼容 ie 的格式化输出OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(UTF-8); /把 xml 文件从内存中写入文件XMLWriter writer = new XMLWriter(new FileWriter(myxml.xml), format); writer.write(do
8、cument); writer.close(); catch (IOException e) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - e.printStackTrace(); SuppressWarnings( unchecked) /*对xml 文件的修改操作*修改 xml 文件以后要重新把xml 文件从内存中写入文件,否则修改的只是内存中的 xml ,实际文件不会改变*DOM4j 操作 xml 文件是一次性把所有数据
9、读入内存中,所以xml 文件过大不能用dom4j 去解析*/publicstaticvoid modifyxml() /使用 SAXReader去解析 xml 文件SAXReader reader=new SAXReader(); Document document; try File file = new File(C:workspaceTestmyxml.xml); /获取 document对象 document=reader.read(file); /通过 selectNodes寻找节点或者属性 List list=document.selectNodes(/student/call/s
10、how); Iterator it=list.iterator(); while(it.hasNext() /Attribute属性的操作方法 Attribute attribute=(Attribute)it.next(); if(attribute.getValue().equals(yes) attribute.setValue(no); list =document.selectNodes(/student/call/name); it=list.iterator(); while(it.hasNext() /标签内容的操作方法Element nameElment=(Element)i
11、t.next(); nameElment.setText(studentname); /删除某个节点是要用两层循环,因为删除当前节点必须用父节点去删除。list=document.selectNodes(/student/call); it=list.iterator(); while(it.hasNext() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - /获取父节点Element scoreElement=(Element
12、)it.next(); System.out .println(scoreElement); SuppressWarnings( unused) /获取该父节点下面的需要查找的子节点Iterator itera=scoreElement.elementIterator(English); while(itera.hasNext() Element scoreEnglish=(Element)itera.next(); if(scoreEnglish.getText().equals(77) / / 利用父节点去删除 scoreElement.remove(scoreEnglish); Supp
13、ressWarnings( unused) /* Iterator itera=document.getRootElement().elementIterator(call); while(itera.hasNext()Element ele=(Element)itera.next();System.out.println(ele);*/OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(UTF-8); XMLWriter writer; try writer = new XMLWriter(ne
14、w FileWriter(myxml.xml), format); writer.write(document); writer.close(); catch (IOException e) e.printStackTrace(); catch (DocumentException e) e.printStackTrace(); publicstaticvoid main(String args) ReaderDom4j.createxml(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
15、- - 第 4 页,共 5 页 - - - - - - - - - ReaderDom4j.modifyxml(); 总结如下:创建 xml 文件获取 document对象Document document =DocumentHelper.createDocument();创建节点父节点 .addElement(“ 子节点 ” ); 创建节点的内容节点 .setText(“ 内容 ” ); 创建节点的属性及内容节点 .addAttribute(“ 属性名 ” , ” 属性值 ” ); 修改 xml 的操作获取 SAXReader的对象SAXReader reader=new SAXReader
16、(); 获取 document对象Document document=reader.read(new File(“ 路径名 ” ) 获取根节点document.getRootElement(); 获取根节点一下的某个节点的迭代Iterator it= document.getRootElement().elementIterator(); 获取元素迭代器Iterator it=document.selectNodes(“ /student/call/name/show” ); (获取根节点一下call节点一下Name 节点的属性show 的值)修改属性的值attribute.setValue(); 修改标签的内容element.setText(); 删除便签父节点 .remove(子节点 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -