首页 > 代码库 > 【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文件