测试例子1
@SuppressWarnings("unchecked") public class TestDom4j { private static SAXReader reader; static{ reader = new SAXReader(); } /** * 得到文档的document * @param is * @return * @throws DocumentException */ public static Document getDocument( InputStream is ) throws DocumentException{ return reader.read(is ); } /** * 得到 xml文件的根元素 * @param doc * @return */ public static Element getRoot( Document doc){ return doc.getRootElement(); } /** * document 的遍历 ,通过递归的方式 * @param is * @return * @throws DocumentException */ public static List readXML( Element root ) throws DocumentException{ List list = new ArrayList(); list = getData(root); return list; } /** * 递归元素数据 * @param root * @return */ private static List getData(Element root) { // System.out.println( "节点总数:::"+root.nodeCount()); for(int i=0;i<root.nodeCount();i++){ Node node = root.node(i); if(node instanceof Element ){ getData((Element)node); // System.out.println("element node !"); }else{ System.out.println( node.getPath()+" == "+node.getText()+" "); } } return null; } /** 查找功能 * /books/book/@show xpath 遍历这个路径下的说有show属性 * /books/book 表示xpath 此路径下的所有元素 * @param node * @param xpath */ public static List getByXpath(Node node,String xpath){ List list = node.selectNodes(xpath); for(int i=0;i<list.size();i++){ // Attribute attr = (Attribute) list.get(i); // System.out.println( attr.getValue()); // System.out.println( list.get(i)); } return list; } public static Element addEle(Element parentNode, String childNodeName){ return parentNode.addElement(childNodeName); } /** * 向文件中写入 东西 测试 * @param filepath * @throws DocumentException * @throws IOException */ public static void writeFile(String filepath ) throws DocumentException, IOException { File f = new File(filepath); Document doc = reader.read(f); Element root = doc.getRootElement(); root.addElement("book").addAttribute("name", "我得书").addElement("title").addText("感觉不是很爽!!"); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileWriter(new File(filepath)),format); writer.write(doc); writer.close(); } /** * 增删改的应用 * @throws DocumentException * @throws IOException */ public static void rem_add_update() throws DocumentException, IOException{ File f = new File("D://book.xml"); Document doc = reader.read(f); Element root = doc.getRootElement(); // List list = getByXpath(root, "/books/book/@show"); // for(int i=0;i<list.size();i++){ // Attribute attr = (Attribute) list.get(i); // String val = attr.getValue(); // if("none".equals( val )){ // attr.setValue("处理"); // } // } List list_ele = getByXpath(root, "/books/book"); System.out.println( list_ele.size()); for(int i=0;i<list_ele.size();i++){ Element ele = (Element) list_ele.get(i); ele.addAttribute("public", "5"); //添加属性 如果属性存在则修改属性 //删除文档中左后一个元素 if( i==(list_ele.size()-1) ) root.remove( ele ); } XMLWriter writer = new XMLWriter(new FileWriter(new File("D://book.xml")) ); writer.write(doc); writer.close(); } public static void main(String[] args) throws DocumentException, IOException { // InputStream is = TestDom4j.class.getClassLoader().getSystemResourceAsStream ("book.xml"); // Document doc = getDocument(is); // Element root = getRoot(doc); // readXML( root ); File f = new File("D://book.xml"); Document doc = reader.read(f); Element root = doc.getRootElement(); // List list = getByXpath(root, "/books/book/@show"); // for(int i=0;i<list.size();i++){ // Attribute attr = (Attribute) list.get(i); // String val = attr.getValue(); // if("none".equals( val )){ // attr.setValue("处理"); // } // } // getByXpath(root, "/books/book"); } }
------------ ---xml文件
<?xml version="1.0" encoding="UTF-8"?> <books> <book show="yes"> <title>此处的添加方法 是根元素books已经存在的情况下dom4j 练习21</title> </book> <book show="no"> <title>java 变成思想</title> </book> <book show="yes"> <title>java程序设计</title> </book> <book show="none"> <title>java程序设计</title> </book> </books>
测试的例子2
package dom4j; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Iterator; 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; public class Dom4jDemo { /** * * @param fileName * 生成的xml文件名 * @param txtName * 包含的对账文件txt文件名 */ public void createXml(String fileName, String txtName) { Document document = DocumentHelper.createDocument(); Element root = document.addElement("root"); Element head = root.addElement("head"); Element type = head.addAttribute("type", "0"); Element code = head.addAttribute("code", "3003"); Element yhlb = head.addElement("yhlb"); yhlb.setText("01"); Element username = head.addElement("username"); username.setText("gsyh"); Element password = head.addElement("password"); password.setText("zheshimima"); Element body = root.addElement("body"); Element data = body.addElement("data"); Element dzwjm = data.addElement("dzwjm"); dzwjm.setText(txtName); try { // 写入文件 Writer fileWriter = new FileWriter(fileName); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter xmlWriter = new XMLWriter(fileWriter, format); xmlWriter.write(document); xmlWriter.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } /** * * @param fileName * 要解析的文件名 * @return 解析xml文件得到的需要对账的文件名 */ public String parserXml(String fileName) { String findFileName = ""; File inputXml = new File(fileName); SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(inputXml); Element root = document.getRootElement(); for (Iterator i = root.elementIterator(); i.hasNext();) { Element head = (Element) i.next(); for (Iterator j = head.elementIterator(); j.hasNext();) { Element elem = (Element) j.next(); System.out.println(elem.getName() + ":" + elem.getText()); for (Iterator k = elem.elementIterator(); k.hasNext();) { Element last = (Element) k.next(); System.out.println(last.getName() + ":" + last.getText()); findFileName = last.getText(); } } } } catch (DocumentException e) { System.out.println(e.getMessage() + "hello"); } System.out.println("dom4j parserXml"); return findFileName; } /** * 测试main方法 * * @param args */ public static void main(String[] args) { Dom4jDemo demo = new Dom4jDemo(); // demo.createXml("D://request.xml", "test.txt"); demo.parserXml("d://request.xml"); } }
相关推荐
它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML(eXtensible Markup Language)是一种用于标记数据...
在这个教程中,我们将深入探讨如何使用 DOM4J 来读取 XML 字符串。 ### 1. DOM4J 简介 DOM4J 是一个基于 Java 的开源项目,它的全名是 Document Object Model for Java。与传统的 DOM API 相比,DOM4J 提供了更...
- **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...
在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是Apache软件基金会的一个项目,它通过定义项目对象模型(Project Object Model,POM)来管理项目的构建、...
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
DOM4J提供了几个核心类和接口来帮助我们操作XML文档: 1. **Document**: 表示整个XML文档。 2. **Element**: 表示XML文档中的元素。 3. **Attribute**: 表示元素的属性。 4. **Text**: 表示元素中的文本内容。 5. *...
在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...
首先,`XMLTest.java`是一个包含DOM4J操作XML的代码实例。通常,这样的程序会包含以下步骤: 1. 引入DOM4J库:在Java项目中,你需要导入DOM4J的相关类,如`org.dom4j.Document`、`org.dom4j.DocumentHelper`等。这...
DOM4J通过创建一个对象模型来表示XML文档,使得我们可以像操作Java对象一样操作XML元素。 1. **XML解析**: - 使用`DocumentBuilderFactory`和`DocumentBuilder`类可以将XML字符串转换为`Document`对象,这是DOM4J...
为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...
Dom4j作为一款简洁高效的Java库,被广泛应用于解析、操作XML文档。本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例代码帮助读者更好地理解和掌握这些技术。 #### 方法一:使用`SAXReader`与`...
本文将深入探讨如何使用DOM4J库来读取XML文件。 首先,让我们理解DOM4J的基本概念。DOM4J是基于DOM模型的,DOM(Document Object Model)是一种标准的API,用于解析XML文档并将其表示为一棵由节点组成的树形结构。...
### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...
DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...
在Java中,DOM4J提供了一种灵活的方式来操作XML文档,包括解析、遍历、修改节点以及序列化回XML字符串。 **DOM4J的基本概念:** 1. **Element(元素)**:XML文档中的每一个标签都是一个Element,它包含属性、文本...
在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4J采用Document Object Model (DOM)接口,但它的实现比标准DOM更快,占用内存更...