使用DOM4j解析xml文件

合集下载

java_Dom4j解析XML详解

java_Dom4j解析XML详解

学习:Dom4j1、DOM4J简介DOM4J是 出品的一个开源XML 解析包。

DOM4J应用于Java 平台,采用了Java 集合框架并完全支持DOM,SAX 和JAXP。

DOM4J 使用起来非常简单。

只要你了解基本的XML-DOM 模型,就能使用。

Dom:把整个文档作为一个对象。

DOM4J 最大的特色是使用大量的接口。

它的主要接口都在org.dom4j里面定义:接口之间的继承关系如下:interface ng.Cloneableinterface org.dom4j.Nodeinterface org.dom4j.Attributeinterface org.dom4j.Branchinterface org.dom4j.Documentinterface org.dom4j.Elementinterface org.dom4j.CharacterDatainterface org.dom4j.CDATAinterface mentinterface org.dom4j.Textinterface org.dom4j.DocumentTypeinterface org.dom4j.Entityinterface org.dom4j.ProcessingInstruction2、XML文档操作12.1、读取XML文档:读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。

因为利用了相同的接口,它们的调用方式是一样的。

public static Docum ent load(String filenam e) {Document docum ent =null;try {SAXReader saxReader = new SAXReader();docum ent =saxReader.read(new File(filename)); //读取XML文件,获得docum ent 对象} catch (Exception ex) {ex.printStackTrace();}return docum ent;}或public static Docum ent load(URL url) {Document docum ent =null;try {SAXReader saxReader = new SAXReader();docum ent =saxReader.read(url); //读取XML文件,获得docum ent对象} catch (Exception ex) {ex.printStackTrace();}return docum ent;}//读取指定的xml文件之后返回一个Document对象,这个对象代表了整个XML文档,用于各种Do m运算。

org.dom4j.document的用法

org.dom4j.document的用法

org.dom4j.document的用法1.概述o r g.do m4j.do cu men t是一个J av a语言中常用的XM L文档处理库,提供了丰富的功能和便捷的A PI,可以用于解析、创建、修改和操作X ML 文档。

本文将介绍or g.d om4j.d oc um ent的用法,包括文档的创建、节点的查找和修改等。

2.创建文档要使用o rg.d om4j.d o cu me nt,首先需要引入相关的库文件或依赖。

然后可以通过以下方式创建空白的XM L文档:D o cu me nt do cu me nt=D oc um en tH el pe r.c r ea te Do cu me nt();接下来可以向文档中添加根节点和其他节点,例如:E l em en tr oo tE le men t=d oc um en t.ad dEl e me nt("ro ot");E l em en tc hi ld El eme n t=ro ot El em en t.a d dE le me nt("ch ild");3.查找节点o r g.do m4j.do cu men t提供了多种方法用于查找文档中的节点。

下面是几个常用的查找方法的示例:3.1通过路径查找可以使用XP at h表达式来查找节点,例如:E l em en te le me nt=(E l em en t)do cu me nt.s el ec tS in gl eN ode("//r o o t/c hi ld");3.2通过名称查找可以使用节点的名称查找节点,例如:E l em en te le me nt=do c um en t.ge tR oo tEl e me nt().e le me nt("ch il d ");3.3通过属性查找可以使用节点的属性来查找节点,例如:E l em en te le me nt=(E l em en t)do cu me nt.s el ec tS in gl eN ode("//r o o t/c hi ld[@at tr='v a lu e']");4.修改节点o r g.do m4j.do cu men t也允许对节点进行修改操作,包括添加、删除和修改节点的属性等。

dom4j element方法总结

dom4j element方法总结

dom4j element方法总结DOM4J是一个Java库,用于处理XML文档。

它提供了一种方便的方式来解析、修改和创建XML文档。

以下是DOM4J Element的一些常用方法:1. 获取子元素:`List<Element> elements()`: 获取当前元素的所有子元素。

`List<Element> elements(String name)`: 根据指定的元素名称获取所有子元素。

`Element element(String name)`: 根据指定的元素名称获取子元素对象,如果元素名称重复,则获取第一个元素。

2. 获取和设置文本内容:`String getText()`: 获取当前元素对象的文本内容。

`void setText(String text)`: 设置当前元素对象的文本内容。

3. 获取属性值:`String attributeValue(String name)`: 根据指定的属性名称获取其对应的值。

4. 添加属性:`public Element addAttribute(String name, String value)`: 根据指定的属性名称和值进行添加或修改。

5. 获取根元素:`Element getRootElement()`: 获取根元素对象(根标签)。

6. 遍历所有元素节点:可以通过递归的方式遍历所有元素节点并打印它们的名称。

首先获取根元素,然后对每个子元素递归调用此方法。

7. 其他常用操作:获取元素的命名空间URI、命名空间Prefix等。

判断元素是否有某个属性。

删除或替换子元素等。

使用DOM4J时,建议查阅官方文档或相关教程,以了解更多关于Element 和其它相关功能的详细信息。

java如何解析http请求返回的xml报文

java如何解析http请求返回的xml报文

java如何解析http请求返回的xml报⽂xml报⽂解析⽅法有很多种,此处采⽤dom4j的⽅法。

dom4j的jar包下载地址:https://dom4j.github.io/#1、request.getInputStream()和new SAXReader().read(输⼊流):返回的报⽂如下:<?xml version="1.0" encoding="UTF-8"?><CreateAccessKeyResponse> <CreateAccessKeyResult> <AccessKey> <UserName>aaa</UserName> <AccessKeyId>2019dfc6ab5fe433f10c</AccessKeyId> <Status>Active</Status> <IsPrimary>false</IsPrimary> <SecretAccessKey>a14aeb3ac35b835d5ec4507d5667a353c77ceedc</SecretAccessKey></AccessKey></CreateAccessKeyResult></CreateAccessKeyResponse>获取参数AccessKeyId的值:import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;HttpURLConnection conn = create_AccessKey(); //create_AccessKey为⾃⼰写的http请求⽅法// 从request中取得输⼊流InputStream inputStream = conn.getInputStream();// 读取输⼊流SAXReader reader = new SAXReader();Document document = reader.read(inputStream);// 得到xml根元素Element root = document.getRootElement();String AK = root.element("CreateAccessKeyResult").element("AccessKey").element("AccessKeyId").getTextTrim();System.out.println("AccessKeyId="+AK+"\n");2、⽤dom4j读取xml⽂件中的参数:public void readXml() throws DocumentException, FileNotFoundException, IOException {String xml =System.getProperty("user.dir")+File.separator+"src"+File.separator+"test"+File.separator+"java"+File.separator+"http"+File.separator+"config.xml"; File xmlFile = new File(xml);SAXReader reader = new SAXReader();try {Document document = reader.read(xmlFile);Element root = document.getRootElement();AK = root.element("ak").getTextTrim();SK = root.element("sk").getTextTrim();} catch (Exception e) {e.printStackTrace();}}config.xml的内容如下:<?xml version="1.0" encoding="UTF-8"?><configuration> <ak>0d34d3db4bab560d343c</ak> <sk>a52628cb22b5a12642dd907075df6996b4c8a7b1</sk></configuration>。

Dom4J解析xml文件动态转换为ListBean或者Map集合

Dom4J解析xml文件动态转换为ListBean或者Map集合

Dom4J解析xml⽂件动态转换为ListBean或者Map集合⼤家在解析⼤量相似xml⽂件的时候是否会遇到这样⼀个问题:冗余的代码去set定义的实体对象Bean的值,基本都是⼀样的操作⽽且毫⽆任何代码价值可⾔所以在这写了⼀个简单的例⼦,类封装了⼏个⽅法你只需传⼊xml⽂件,或者URL路径。

和Bean.Class 类名即可⾃动传回你需要的List集合。

需要解析的xml⽂件<?xml version="1.0" encoding="UTF-8"?><messages><resultCode>0</resultCode><totalCount>2</totalCount><UserLists><UserList><userId>0</userId><loginName>张三0</loginName><email>qsina0@</email><userType>1</userType><status>1</status><roleType>1</roleType><registerIP>192.168.1.0</registerIP><registerTime>2012-06-07 15:35:33</registerTime></UserList><UserList><userId>1</userId><loginName>张三1</loginName><email>qsina1@</email><userType>1</userType><status>1</status><roleType>1</roleType><registerIP>192.168.1.1</registerIP><registerTime>2012-06-07 15:35:33</registerTime></UserList></UserLists></messages>在进⾏相关操作中需要如下包:下⾯是贴出的代码:package mon.util;import ng.reflect.Field;import .URL;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class XmlParseUtil {/*** 反射设置实体不同类型字段的值 <暂时只⽀持⽇期字符串 boolean Integer值设置待扩建>** @param field* @param obj* @param value* @throws Exception*/public static void convertValue(Field field, Object obj, String value)throws Exception {SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");if (field.getGenericType().toString().equals("class ng.Integer")) {field.set(obj, Integer.parseInt(value));} else if (field.getGenericType().toString().equals("boolean")) {field.set(obj, Boolean.parseBoolean(value));} else if (field.getGenericType().toString().equals("class java.util.Date")) {field.set(obj, sim.parse(value));} else {field.set(obj, value);}}/*** 解析xml⽂件返回保存cls的List集合,如果返回码resultCode=1时则返回List为null** @param xml* @param cls* @return* @throws Exception*/@SuppressWarnings("unchecked")public static List<?> parseXml2List(String xml, Class<?> cls)throws Exception {List<Object> lists = null;Document doc = DocumentHelper.parseText(xml);Element et = doc.getRootElement();String root = et.getName();// 查看返回码是否为真.List<Element> list = doc.selectNodes("//" + root + "/resultCode");if (!list.isEmpty() && list.size() > 0) {Element element = list.get(0);String returnResult = element.getText();if (returnResult.equals("0")) {List<Element> father = doc.selectNodes("//" + root + "/"+ cls.getSimpleName()+"s"); //判断对象⽗节点是否有包含数据if(father!=null&&!father.isEmpty()&&father.size()==1){List<Element> userLists = father.get(0).elements();if (userLists!=null&&!list.isEmpty()) {lists = new ArrayList<Object>();for (Element e : userLists) {List<Element> li = e.elements();Class<?> cl = (Class<?>) Class.forName(cls.getName());Object ob = cl.newInstance();for (Element element2 : li) {String name = element2.getName();String value = element2.getText();Field field = ob.getClass().getDeclaredField(name);field.setAccessible(true);convertValue(field, ob, value);}lists.add(ob);}}}}}return lists;}/*** 解析xml⽂件返回保存cls的List集合,如果返回码resultCode=1时则返回List为null** @param url* @param cls* @return* @throws Exception*/@SuppressWarnings("unchecked")public static List<?> parseXml2List(URL url, Class<?> cls)throws Exception {List<Object> lists = null;SAXReader saxReader = new SAXReader();Document doc = saxReader.read(url);Element et = doc.getRootElement();String root = et.getName();// 查看返回码是否为真.List<Element> list = doc.selectNodes("//" + root + "/resultCode");if (!list.isEmpty() && list.size() > 0) {Element element = list.get(0);String returnResult = element.getText();if (returnResult.equals("0")) {List<Element> father = doc.selectNodes("//" + root + "/"+ cls.getSimpleName()+"s");//判断对象⽗节点是否有包含数据if(father!=null&&!father.isEmpty()&&father.size()==1){List<Element> userLists = father.get(0).elements();if (userLists!=null&&!list.isEmpty()) {lists = new ArrayList<Object>();for (Element e : userLists) {List<Element> li = e.elements();Class<?> cl = (Class<?>) Class.forName(cls.getName());Object ob = cl.newInstance();for (Element element2 : li) {String name = element2.getName();String value = element2.getText();Field field = ob.getClass().getDeclaredField(name);field.setAccessible(true);convertValue(field, ob, value);}lists.add(ob);}}}}}return lists;}/*** 解析xml⽂件返回保存Map的集合,map中可能包含key值为returnCode、desc、totalCount等单字段. * 也可能包含存储对象为List<cls>的集合值.* 获取List值key cls_List* @param requestPath* @param cls* @return map* @throws Exception*/@SuppressWarnings("unchecked")public static Map<String, Object> parseXml2Map(String requestPath,Class<?> cls) throws Exception {Map<String, Object> maps = new HashMap<String, Object>();List<Object> lists = new ArrayList<Object>();SAXReader saxReader = new SAXReader();//Document doc = saxReader.read(new File(requestPath));Document doc = saxReader.read(new URL(requestPath));Element et = doc.getRootElement();// 标记List是否为空// boolean bool = true ;// 根节点名字List<Element> rList = et.elements();for (Element element : rList) {List<Element> rLists = element.elements();if (!rLists.isEmpty() && rLists.size() > 0) {//bool = false;// 判断⼆级节点for (Element e : rLists) {List<Element> li = e.elements();Class<?> cl = (Class<?>) Class.forName(cls.getName()); Object ob = cl.newInstance();for (Element element2 : li) {String name = element2.getName();String value = element2.getText();Field field = ob.getClass().getDeclaredField(name);field.setAccessible(true);convertValue(field, ob, value);}lists.add(ob);}} else {maps.put(element.getName(), element.getText());}maps.put(cls.getSimpleName() + "_List", lists);}return maps;}/*** 只获取返回码0为保存成功(true)1为保存失败(false)*/@SuppressWarnings("unchecked")public static boolean parseXmlReturnCode(String xml) {boolean bool = false;try {Document doc = DocumentHelper.parseText(xml);Element et = doc.getRootElement();String root = et.getName();// 查看返回码是否为真.List<Element> list = doc.selectNodes("//" + root + "/resultCode"); if (!list.isEmpty() && list.size() > 0) {Element element = list.get(0);String returnResult = element.getText();if (returnResult.equals("0")) {bool = true;}}} catch (Exception e) {e.printStackTrace();}return bool;}}。

JavaXML解析的四种方法(连载)

JavaXML解析的四种方法(连载)

JavaXML解析的四种⽅法(连载)1. xml简介 XML:指可扩展标记语⾔, Extensible Markup Language;类似HTML。

XML的设计宗旨是传输数据,⽽⾮显⽰数据。

⼀个xml⽂档实例:1 <?xml version="1.0" encoding="UTF-8"?>2 <company name="Tencent" address="深圳市南⼭区">3 <department deptNo="001" name="development">4 <employee id="devHead" position="minister">许刚</employee>5 <employee position="developer">⼯程师A</employee>6 </department>7 <department deptNo="002" name="education">8 <employee position="minister" telephone="1234567">申林</employee>9 <employee position="trainee">实习⽣A</employee>10 </department>11 </company> 第⼀⾏是 XML 声明。

它定义 XML 的版本 (1.0) 和所使⽤的编码. 下⼀⾏描述⽂档的根元素:<company>开始,该根元素具有2个属性“name”,"address"。

DOM4J详细教程

DOM4J详细教程

DOM4J详细教程
答:
DOM4J是一个Java XML API,它可以用来快速、高效地读取、生成和
修改XML数据。

它支持XPath的完整实现,支持Java5的新功能,并有一
个强大的可扩展的SAX集成,还支持JAXP 1.3、通过支持性能良好的DOM、SAX以及JAXP的结合,它可以提供XML文档的可用性。

1.使用DOM4J
使用DOM4J解析XML文档的主要步骤如下:
(1)创建一个Document对象,该文档对象将描述整个XML文档。

(2)创建一个XMLReader对象,该对象使用DOM4J的API来解析
XML文档。

(3)创建一个DocumentHandler对象,该对象用来处理XML文档内容,如处理XML文档的根元素和子元素等。

(4)使用XMLReader的parse方法来将Document对象与DocumentHandler对象相关联,以便允许访问Document对象的内容。

(5)执行任何必要的处理来解析XML文档中的元素。

2.DOM4J技术
(1)XML读取
DOM4J提供了一组API,可以在处理XML文档时使用。

DOM4J的
org.dom4j.io.XMLReader类可以解析XML文档,将其转换为DOM4J的
Document对象。

它可以使用InputSource或java.io.Reader对象的任何对象,以确保可以将XML文档从字符串、文件或URL读取。

(2)XML写入
(3)XPath查询。

dom4j下载与使用文档

dom4j下载与使用文档

Dom4j下载及使用Dom4j读写XML简介要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在/目前最新dom4j包下载地址:/sourceforge/dom4j/dom4j-1.6.1.zip解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar.以下是相关操作:一.Document对象相关1.读取XML文件,获得document对象.SAXReader reader = new SAXReader();Document document = reader.read(new File("input.xml"));2.解析XML形式的文本,得到document对象.String text = "<members></members>";Document document = DocumentHelper.parseText(text);3.主动创建document对象.Document document = DocumentHelper.createDocument();Element root = document.addElement("members");// 创建根节点二.节点相关1.获取文档的根节点.Element rootElm = document.getRootElement();2.取得某节点的单个子节点.Element memberElm=root.element("member");// "member"是节点名3.取得节点的文字String text=memberElm.getText();也可以用:String text=root.elementT ext("name");这个是取得根节点下的name字节点的文字.4.取得某节点下名为"member"的所有字节点并进行遍历.List nodes = rootElm.elements("member");for (Iterator it = nodes.iterator(); it.hasNext();) {Element elm = (Element) it.next();// do something}5.对某节点下的所有子节点进行遍历.for(Iterator it=root.elementIterator();it.hasNext();){Element element = (Element) it.next();// do something}6.在某节点下添加子节点.Element ageElm = newMemberElm.addElement("age");7.设置节点文字.ageElm.setText("29");8.删除某节点.parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点三.属性相关.1.取得某节点下的某属性Element root=document.getRootElement();Attribute attribute=root.attribute("size");// 属性名name2.取得属性的文字String text=attribute.getText();也可以用:String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值.3.遍历某节点的所有属性Element root=document.getRootElement();for(Iterator it=root.attributeIterator();it.hasNext();){Attribute attribute = (Attribute) it.next();String text=attribute.getText();System.out.println(text);}4.设置某节点的属性和文字.newMemberElm.addAttribute("name", "sitinspring");5.设置属性的文字Attribute attribute=root.attribute("name");attribute.setText("sitinspring");6.删除某属性Attribute attribute=root.attribute("size");// 属性名nameroot.remove(attribute);四.将文档写入XML文件.1.文档中全为英文,不设置编码,直接写入的形式.XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));writer.write(document);writer.close();2.文档中含有中文,设置编码格式写入的形式.OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("GBK"); // 指定XML编码XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);writer.write(document);writer.close();五.字符串与XML的转换1.将字符串转化为XMLString text = "<members> <member>sitinspring</member> </members>";Document document = DocumentHelper.parseText(text);2.将文档或节点的XML转化为字符串.SAXReader reader = new SAXReader();Document document = reader.read(new File("input.xml"));Element root=document.getRootElement();String docXmlText=document.asXML();String rootXmlText=root.asXML();Element memberElm=root.element("member");String memberXmlText=memberElm.asXML();六.使用XPath快速找到节点.读取的XML文档示例<?xml version="1.0" encoding="UTF-8"?><projectDescription><name>MemberManagement</name><comment></comment><projects><project>PRJ1</project><project>PRJ2</project><project>PRJ3</project><project>PRJ4</project></projects><buildSpec><buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand></buildSpec><natures><nature>org.eclipse.jdt.core.javanature</nature></natures></projectDescription>使用XPath快速找到节点project.public static void main(String[] args){SAXReader reader = new SAXReader();try{Document doc = reader.read(new File("sample.xml"));List projects=doc.selectNodes("/projectDescription/projects/project"); Iterator it=projects.iterator();while(it.hasNext()){Element elm=(Element)it.next();System.out.println(elm.getText()); }}catch(Exception ex){ex.printStackTrace();}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Xml文件:<?xml version="1.0" encoding="UTF-8"?><student><!--first xml--><call show="no"><name>studentname</name><English>78</English><Chinese>78</Chinese><Japan>98</Japan></call><call show="no"><name>studentname</name><English>77</English><Chinese>68</Chinese><Japan>88</Japan></call></student>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.DocumentHelper;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**/public class ReaderDom4j {/***创建一个xml文件**/public static void createxml() {//使用 DocumentHelper 类创建一个文档实例。

DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。

Document document = DocumentHelper.createDocument();//使用 addElement() 方法创建根元素 studentElement booksElement = document.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.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.setText("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.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(document);writer.close();} catch (IOException e) {e.printStackTrace();}}@SuppressWarnings("unchecked")/***对xml文件的修改操作*修改xml文件以后要重新把xml文件从内存中写入文件,否则修改的只是内存中的xml,实际文件不会改变*DOM4j操作xml文件是一次性把所有数据读入内存中,所以xml文件过大不能用dom4j去解析**/public static void modifyxml(){//使用SAXReader去解析xml文件SAXReader reader=new SAXReader();Document document;try {File file = new File("C:\\workspace\\Test\\myxml.xml");//获取document对象document=reader.read(file);//通过selectNodes寻找节点或者属性List list=document.selectNodes("/student/call/@show");Iterator it=list.iterator();while(it.hasNext()){//Attribute属性的操作方法Attribute attribute=(Attribute)it.next();if(attribute.getValue().equals("yes")){a ttribute.setValue("no");}}list =document.selectNodes("/student/call/name");it=list.iterator();while(it.hasNext()){//标签内容的操作方法Element nameElment=(Element)it.next();nameElment.setText("studentname");}//删除某个节点是要用两层循环,因为删除当前节点必须用父节点去删除。

list=document.selectNodes("/student/call");it=list.iterator();while(it.hasNext()){//获取父节点Element scoreElement=(Element)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);}}}@SuppressWarnings("unused")/* Iteratoritera=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(new FileWriter("myxml.xml"),format);writer.write(document);writer.close();} catch (IOException e) {e.printStackTrace();}} catch (DocumentException e) {e.printStackTrace();}}public static void main(String args[]){ReaderDom4j.createxml();ReaderDom4j.modifyxml();}}总结如下:创建xml文件获取document对象Document document =DocumentHelper.createDocument();创建节点父节点.addElement(“子节点”);创建节点的内容节点.setText(“内容”);创建节点的属性及内容节点.addAttribute(“属性名”,”属性值”);修改xml的操作获取SAXReader的对象SAXReader reader=new SAXReader();获取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(子节点);。

相关文档
最新文档