`

dom4j读取XML简单使用

 
阅读更多

 

 

  测试例子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");
	}
}

 

 

 

 

分享到:
评论

相关推荐

    dom4j读写xml文档实例

    它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML(eXtensible Markup Language)是一种用于标记数据...

    DOM4J 读取xml字符串

    在这个教程中,我们将深入探讨如何使用 DOM4J 来读取 XML 字符串。 ### 1. DOM4J 简介 DOM4J 是一个基于 Java 的开源项目,它的全名是 Document Object Model for Java。与传统的 DOM API 相比,DOM4J 提供了更...

    Dom4j解析XML文档.doc

    在本文中,我们将深入探讨如何使用DOM4J来解析和操作XML文档。 首先,要使用DOM4J,你需要下载其库文件。官方站点位于http://www.dom4j.org,你可以在这里找到最新的DOM4J包,例如dom4j-1.6.1.zip。解压缩后,你会...

    dom4j解析xml详解

    - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...

    DOM4j操作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管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是Apache软件基金会的一个项目,它通过定义项目对象模型(Project Object Model,POM)来管理项目的构建、...

    dom4j 解析(读取) xml 节点数据

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    dom4j解析xml

    DOM4J提供了几个核心类和接口来帮助我们操作XML文档: 1. **Document**: 表示整个XML文档。 2. **Element**: 表示XML文档中的元素。 3. **Attribute**: 表示元素的属性。 4. **Text**: 表示元素中的文本内容。 5. *...

    dom4j读取XML,解析XML简单示例

    首先,`XMLTest.java`是一个包含DOM4J操作XML的代码实例。通常,这样的程序会包含以下步骤: 1. 引入DOM4J库:在Java项目中,你需要导入DOM4J的相关类,如`org.dom4j.Document`、`org.dom4j.DocumentHelper`等。这...

    dom4j操作xml

    DOM4J通过创建一个对象模型来表示XML文档,使得我们可以像操作Java对象一样操作XML元素。 1. **XML解析**: - 使用`DocumentBuilderFactory`和`DocumentBuilder`类可以将XML字符串转换为`Document`对象,这是DOM4J...

    dom4j解析xml文件的压缩包

    为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...

    使用dom4j读取xml四种方法

    Dom4j作为一款简洁高效的Java库,被广泛应用于解析、操作XML文档。本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例代码帮助读者更好地理解和掌握这些技术。 #### 方法一:使用`SAXReader`与`...

    java中用dom4j读取xml

    本文将深入探讨如何使用DOM4J库来读取XML文件。 首先,让我们理解DOM4J的基本概念。DOM4J是基于DOM模型的,DOM(Document Object Model)是一种标准的API,用于解析XML文档并将其表示为一棵由节点组成的树形结构。...

    使用dom4j操作xml

    ### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...

    XSD使用dom4j校验XML

    DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...

    java中dom4j读写XML

    在Java中,DOM4J提供了一种灵活的方式来操作XML文档,包括解析、遍历、修改节点以及序列化回XML字符串。 **DOM4J的基本概念:** 1. **Element(元素)**:XML文档中的每一个标签都是一个Element,它包含属性、文本...

    dom4j操作XMl例子

    在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4J采用Document Object Model (DOM)接口,但它的实现比标准DOM更快,占用内存更...

    dom4j解析xml文件(增删改查)

    在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...

Global site tag (gtag.js) - Google Analytics