DOM4J生成、解析XML实例详解编程语言

import java.io.File;   
import java.io.FileWriter;   
import java.io.IOException;   
import java.util.Iterator;   
    
import org.dom4j.Attribute;   
import org.dom4j.Document;   
import org.dom4j.DocumentException;   
import org.dom4j.DocumentHelper;   
import org.dom4j.Element;   
import org.dom4j.io.SAXReader;   
import org.dom4j.io.XMLWriter;   
    
/**  
 *  
 * dom4j生成与解析XML文档  
 *  
*/   
public classDom4jDemo {   
    
    /**  
     * 利用dom4j进行xml文档的写入操作  
     */   
    public void createXml(File file) {   
    
        // XML 声明 <?xmlversion="1.0" encoding="UTF-8"?> 自动添加到 XML文档中   
    
        // 使用DocumentHelper类创建文档实例(生成 XML文档节点的 dom4jAPI工厂类)   
        Document document =DocumentHelper.createDocument();   
    
        // 使用addElement()方法创建根元素employees(用于向 XML 文档中增加元素)   
        Element root =document.addElement("employees");   
    
        // 在根元素中使用 addComment()方法添加注释"AnXML Note"   
        root.addComment("An XMLNote");   
    
        // 在根元素中使用addProcessingInstruction()方法增加一个处理指令   
        root.addProcessingInstruction("target","text");   
    
        // 在根元素中使用 addElement()方法增加employee元素。   
        Element empElem =root.addElement("employee");   
    
        // 使用 addAttribute()方法向employee元素添加id和name属性   
        empElem.addAttribute("id","0001");   
        empElem.addAttribute("name","wanglp");   
    
        // 向employee元素中添加sex元素   
        Element sexElem =empElem.addElement("sex");   
        // 使用setText()方法设置sex元素的文本   
        sexElem.setText("m");   
    
        // 在employee元素中增加age元素 并设置该元素的文本。   
        Element ageElem =empElem.addElement("age");   
        ageElem.setText("25");   
    
        // 在根元素中使用 addElement()方法增加employee元素。   
        Element emp2Elem =root.addElement("employee");   
    
        // 使用 addAttribute()方法向employee元素添加id和name属性   
        emp2Elem.addAttribute("id","0002");   
        emp2Elem.addAttribute("name","fox");   
    
        // 向employee元素中添加sex元素   
        Element sex2Elem =emp2Elem.addElement("sex");   
        // 使用setText()方法设置sex元素的文本   
        sex2Elem.setText("f");   
    
        // 在employee元素中增加age元素 并设置该元素的文本。   
        Element age2Elem =emp2Elem.addElement("age");   
        age2Elem.setText("24");   
    
        // 可以使用 addDocType()方法添加文档类型说明。   
        //document.addDocType("employees", null,"file://E:/Dtds/dom4j.dtd");   
        // 这样就向 XML 文档中增加文档类型说明:   
        // <!DOCTYPE employees SYSTEM"file://E:/Dtds/dom4j.dtd">   
        // 如果文档要使用文档类型定义(DTD)文档验证则必须有Doctype。   
    
        try {   
            XMLWriter output = newXMLWriter(new FileWriter(file));   
            output.write(document);   
            output.close();   
        } catch (IOException e) {   
            System.out.println(e.getMessage());   
        }   
    }   
    
    /**  
     * 利用dom4j进行xml文档的读取操作  
     */   
    public void parserXml(File file) {   
    
        Document document = null;   
    
        // 使用 SAXReader 解析 XML 文档catalog.xml:   
        SAXReader saxReader = new SAXReader();   
    
        try {   
            document = saxReader.read(file);   
        } catch (DocumentException e) {   
            e.printStackTrace();   
        }   
        // 将字符串转为XML   
        // document = DocumentHelper.parseText(fileString);   
    
        // 获取根节点   
        Element root =document.getRootElement();   
        // 打印节点名称   
        System.out.println("<" +root.getName() + ">");   
    
        // 获取根节点下的子节点遍历   
        Iterator<?> iter =root.elementIterator("employee");   
        // 遍历employee节点   
        while (iter.hasNext()) {   
            // 获取当前子节点   
            Element empEle = (Element)iter.next();   
            System.out.println("<"+ empEle.getName() + ">");   
    
            // 获取当前子节点的属性遍历   
            Iterator<?> attrList = empEle.attributeIterator();   
            while (attrList.hasNext()) {   
                Attribute attr = (Attribute)attrList.next();   
               System.out.println(attr.getName() + "=" + attr.getValue());   
            }   
    
            // 遍历employee节点下所有子节点   
            Iterator<?> eleIte =empEle.elementIterator();   
            while (eleIte.hasNext()) {   
                Element ele = (Element)eleIte.next();   
               System.out.println("<" + ele.getName() + ">" +ele.getTextTrim());   
            }   
    
            // 获取employee节点下的子节点sex值   
            // String sex =empEle.elementTextTrim("sex");   
            //System.out.println("sex:" + sex);   
    
        }   
        System.out.println("</" +root.getName() + ">");   
    }  

     public static void main(String[] args) {   
        
            Dom4jDemo dom4j = new Dom4jDemo();   
            File file = newFile("e:/dom4j.xml");   
            // dom4j.createXml(file);   
        
            dom4j.parserXml(file);   
        
        }   
    }  

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11019.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论