XML专栏-dom4j使用
dom4j是一个dom4j.org出品的开源的库,常用于解析xml,dom4j最大的特点是简单易用。这里介绍一下dom4j使用: ? 1.获取document 首先创建SAXReader对象reader,然后使用reader读取xml对应Url或者对应InputStream流。 URL url = XmlUtil.class.getClassLoader().getResource(filePath); ? 2.使用Iterator遍历document的元素和属性 首先获取root根元素,然后获取根节点的Iterator,使用Iterator遍历元素子元素。 Element root = document.getRootElement(); /* 遍历所有子元素 */ for(Iterator i = root.elementIterator();i.hasNext();){ Element element = (Element) i.next(); } /* 遍历所有指定名称子元素 */ for (Iterator i = root.elementIterator("div"); i.hasNext();) { Element dir = (Element) i.next(); } /* 遍历元素下所有属性 */ for (Iterator i = root.attributeIterator();i.hasNext();){ Attribute attr = (Attribute) i.next(); } ? ?3.使用xpath获取元素和属性 List<Node> list = document.selectNodes("/root/dir"); //获取元素列表 Node node = document.selectSingleNode("/root/dir[@id=‘node‘]"); //获取单个元素 String attr= node.valueOf("@style"); //获取元素属性 ?? 4.fast looping 遍历很大的xml文件时,使用?Iterator会创建大量的Iterator Object,消耗内存,这时可以考虑使用递归方式遍历xml文件。 public void treeWalk(Element element){ for (int i=0,size=element.nodeCount(); i < size; i++){ Node nodetemp = element.node(i); if (nodetemp instanceof Element){ treeWalk((Element) nodetemp); }else { //do something } } } public void treeWalk(Document document){ Element root = document.rootElement(); treeWalk(root); } ? 5.创建document 使用DocumentHelper创建新的document,在document下添加root元素,然后可以在root元素下创建各种节点。 Document newDocument = DocumentHelper.createDocument(); Element newRoot = newDocument.addElement("root"); Element author1 = newRoot.addElement( "author" ) .addAttribute( "name","James" ) .addAttribute( "location","UK" ) .addText( "James Strachan" ); Element author2 = newRoot.addElement( "author" ) .addAttribute( "name","Bob" ) .addAttribute( "location","US" ) .addText( "Bob McWhirter" ); ? 6.将document写入文件 使用XMLWriter将document写入文件,实际使用需要在finally中关闭writer。 XMLWriter writer = new XMLWriter(new FileWriter(filepath)); writer.write(document); writer.close(); ? 7.格式化输出document 创建带有OutputFormat的XMLWriter可以实现对document的格式化输出。 OutputFormat format = null; ? 8.document转成String String xmlText = document.asXML(); ? ? ? 代码摘自官方文档? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 参考文献:https://github.com/dom4j/dom4j/wiki (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |