一、创建一个简单的xml文件:
/* * @param filename 需建立的文件名 * * @return 返回操作结果, 0表失败, 1表成功 */ public static int createXMLFile(String filename) { /** 返回操作结果, 0表失败, 1表成功 */ int returnValue = 0; /** 建立document文档对象 */ Document document = DocumentHelper.createDocument(); /** 建立XML文档的根节点books */ Element booksElement = document.addElement("books"); /** 在根节点<books>下加入一行注释 */ booksElement.addComment("This is a test for dom4j, holen2009.9.11"); /** 加入第一个book子节点(即第一本书) */ Element bookElement = booksElement.addElement("book"); /** 加入show属性内容 */ bookElement.addAttribute("show", "yes"); /** 在<book>节点下加入title节点 */ Element titleElement = bookElement.addElement("title"); /** 为title设置内容 */ titleElement.setText("Dom4j Tutorials"); /** 类似的完成后两个book */ bookElement = booksElement.addElement("java"); bookElement.addAttribute("show", "yes"); titleElement = bookElement.addElement("title"); titleElement.setText("java编程思想中文版"); bookElement = booksElement.addElement("C语言"); bookElement.addAttribute("show", "no"); bookElement.addAttribute("name", "C#入门经典"); titleElement = bookElement.addElement("title"); titleElement.setText("C#编程思想中文版"); /** 加入owner节点 */ Element ownerElement = booksElement.addElement("owner"); ownerElement.setText("O'Reilly"); try { /** 将document中的内容写入文件中 */ XMLWriter writer = null; /** 格式化输出,类型IE浏览一样 */ OutputFormat format = OutputFormat.createCompactFormat(); /** 指定XML编码 */ format.setEncoding("UTF-8"); writer = new XMLWriter(new FileOutputStream(new File(filename)), format); // writer = new XMLWriter(new FileOutputStream(new File(filename))); // 把整个文档写入文件 writer.write(document); writer.close(); /** 执行成功,需返回1 */ returnValue = 1; } catch (Exception ex) { ex.printStackTrace(); } return returnValue; }
输出的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <books> <!--This is a test for dom4j, holen2009.9.11--> <book show="yes"> <title>Dom4j Tutorials</title> </book> <java show="yes"> <title>java编程思想中文版</title> </java> <C语言 show="no" name="C#入门经典"> <title>C#编程思想中文版</title> </C语言> <owner>O'Reilly</owner> </books>
建立文档步骤及常用方法:
1、建立document文档对象-->DocumentHelper.createDocument();
2、建立XML文档的根节点-->调用Document对象的addElement("elementName")方法
3、加入一行注释-->Element对象的addComment("comment Text")方法
4、在根节点下建立子子节点-->Element对象的addElement("elementName");
5、加入属性内容-->如:<book name="java" show="yes">使用Element对象的addAttribute("name", "value");
6、为节点设置内容-->如:<title>内容<itle>,使用Element的setText("内容")方法
7、将document中的内容写入文件中-->使用XMLWriter的writer方法,通过构造方法XMLWriter(OutputStream out, OutputFormat format)
获得XMLWriter对象.OutputFormat为格式化输出对象(有两种格式),默认是使用CompactFormat,输出的内容不会换行,
若要使用换行,需要通过OutputFormat.createCompactFormat()获取.还可以设置字符值编码,调用OutputFormat的setEncoding("utf-8")方法.
二、读取xml文档.
public static void ReadXml(String filename) { SAXReader saxReader = new SAXReader(); Document document = null; try { document = saxReader.read( // 搜索当前线程classpath下的文件 Thread.currentThread().getContextClassLoader() .getResourceAsStream(filename)); } catch (DocumentException e) { e.printStackTrace(); } // xpath查找对象 List list = document.selectNodes("//java"); for (Iterator iter = list.iterator(); iter.hasNext();) { Element element = (Element) iter.next(); System.out.println(element.attributeValue("show")); List titlelist = element.selectNodes("title"); Element title = (Element) titlelist.get(0); System.out.println(title.getText()); } }
读取文档步骤及常用方法:
1、通过SAXReader对象的read(InputStream in)方法获取整个文档(以树的结构加载到内存中).
2、通过Document对象selectNodes("//java")方法获取指定的节点,并返回List对象,而List里装的Element对象.
3、通过遍历的方式读取指定的节点(Element)列表,通过调用Element的方法可获取此节点的属性值或Text值.
4、你可以定义一个POJO的java类封装Element的属性.
三、dom4j在实际项目中的应用
附件还带有修改的方法