首页 > 代码库 > 【java开发系列】—— JDOM创建、修改、删除、读取XML文件
【java开发系列】—— JDOM创建、修改、删除、读取XML文件
有很多中操作XML文件的方法,这里介绍一下JDOM的使用方法和技巧。
JDOM下载地址
创建XML文档
XML文件是一种典型的树形文件,每个文档元素都是一个document元素的子节点。而每个子元素都是一个Element对象,对象可以向下包含。
1 因此我们可以通过先创建元素再将元素添加到父元素中,最后将顶层元素添加到根元素中。
2 创建完文档元素后,就可以把元素添加到document对象中,然后写入文件。
主要使用的函数:
Element.setAttribute 为元素添加信息Element.addContent(String,String) 为元素添加子元素内容,也可以直接添加另一个元素节点Document.setRootElement(Element) 为文档添加根元素XMLOutputter.output(Document,FileWriter) 将Docuemnt写入到FileWriter文件流中
下面是主要的操作过程,写入文件的过程放到了saveXML中
1 @SuppressWarnings("null") 2 public static void createXML() { 3 // 创建document 4 Document mydoc = new Document(); 5 6 // 创建元素person1 7 Element person1 = new Element("person"); 8 person1.setAttribute("id", "ID001"); 9 // 添加注释10 person1.addContent(new Comment("this is person1"));11 12 person1.addContent(new Element("name").setText("xingoo"));13 person1.addContent(new Element("age").setText("25"));14 person1.addContent(new Element("sex").setText("M"));15 // 可以嵌套添加子元素16 Element address1 = new Element("address");17 address1.setAttribute("zone", "province");18 address1.addContent("LiaoNing");19 person1.addContent(address1);20 21 // 创建元素person222 Element person2 = new Element("person");23 person2.setAttribute("id", "ID002");24 // 添加注释25 person2.addContent(new Comment("this is person2"));26 27 person2.addContent(new Element("name").setText("xhalo"));28 person2.addContent(new Element("age").setText("26"));29 person2.addContent(new Element("sex").setText("M"));30 // 可以嵌套添加子元素31 Element address2 = new Element("address");32 address2.setAttribute("zone", "province");33 address2.addContent("JiLin");34 person2.addContent(address2);35 36 // 在doc中添加元素Person37 Element info = new Element("information");38 info.addContent(person1);39 info.addContent(person2);40 mydoc.setRootElement(info);41 42 saveXML(mydoc);43 }
saveXML()代码:
1 public static void saveXML(Document doc) { 2 // 将doc对象输出到文件 3 try { 4 // 创建xml文件输出流 5 XMLOutputter xmlopt = new XMLOutputter(); 6 7 // 创建文件输出流 8 FileWriter writer = new FileWriter("person.xml"); 9 10 // 指定文档格式11 Format fm = Format.getPrettyFormat();12 // fm.setEncoding("GB2312");13 xmlopt.setFormat(fm);14 15 // 将doc写入到指定的文件中16 xmlopt.output(doc, writer);17 writer.close();18 } catch (Exception e) {19 e.printStackTrace();20 }21 }
执行后,刷新项目,就可以在项目下看到person.xml文件了。
读取XML文档
读取文档,首先需要一个xml的解析器,它可以自动的解析出各个元素,并且把子元素作为自己的孩子节点,方便操作。
主要使用的函数:
SAXBuilder.build("xxx.xml") 解析XML文档Document.getRootElement() 获取根元素Element.getChildren() 获取根元素下的子元素,返回List<Element>Element.getAttributeValue(String) 获取指定元素的信息Element.getChildText 获取指定元素的内容
1 public static void readXML() { 2 // 使用SAXBuilder解析器解析xml文件 3 SAXBuilder sb = new SAXBuilder(); 4 Document doc = null; 5 try { 6 doc = sb.build("person.xml"); 7 Element root = doc.getRootElement(); 8 List<Element> list = root.getChildren("person"); 9 for (Element el : list) {10 String id = el.getAttributeValue("id");11 String name = el.getChildText("name");12 String age = el.getChildText("age");13 String sex = el.getChildText("sex");14 System.out.println("id:" + id);15 System.out.println("name:" + name);16 System.out.println("age:" + age);17 System.out.println("sex:" + sex);18 System.out.println("--------------------------");19 }20 } catch (Exception e) {21 e.printStackTrace();22 }23 }
修改XML文档
修改XML文档,也是先利用解析器找到指定的元素,使用setText或者setAttributeValue来修改元素内容
修改后记得要保存到文件中,即在此调用saveXML()
1 public static void updateXML(){ 2 SAXBuilder sb = new SAXBuilder(); 3 Document doc = null; 4 try { 5 doc = sb.build("person.xml"); 6 Element root = doc.getRootElement(); 7 List<Element> list = root.getChildren("person"); 8 for (Element el : list) { 9 if (el.getAttributeValue("id").equals("ID001")) {10 Element name = el.getChild("name");11 name.setText("xingoo---update");12 }13 }14 } catch (Exception e) {15 e.printStackTrace();16 }17 saveXML(doc);18 }
删除XML文档元素
删除操作类似修改,调用removeCotent就可以根据内容删除指定的元素了。但是要用他的父节点调用。最后也需要保存到文件中才可以。
1 public static void removeXML() { 2 SAXBuilder sb = new SAXBuilder(); 3 Document doc = null; 4 try { 5 doc = sb.build("person.xml"); 6 Element root = doc.getRootElement(); 7 List<Element> list = root.getChildren("person"); 8 for (Element el : list) { 9 if (el.getAttributeValue("id").equals("ID001")) {10 root.removeContent(el);11 }12 }13 } catch (Exception e) {14 e.printStackTrace();15 }16 saveXML(doc);17 }
【java开发系列】—— JDOM创建、修改、删除、读取XML文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。