博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用dom4j解析xml文件
阅读量:6697 次
发布时间:2019-06-25

本文共 4121 字,大约阅读时间需要 13 分钟。

 

使用dom4j解析xml文件

2017-09-12

目录

 

xml源文件

 

 

 

 

代码:

 

import java.io.FileWriter;import java.io.IOException;import java.io.Writer;import java.util.Iterator;import org.dom4j.*;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class Dom4jTest {    Document dom = null;    public static void main(String[] args) {        Dom4jTest dom4j = new Dom4jTest();        //获得Dom树        dom4j.getDom();        //添加新的节点        dom4j.addNode();        //更改元素属性        dom4j.modify();        //更改三星属性        dom4j.modifySan();        //删除节点        dom4j.delete();        //保存xml文件        dom4j.saveXml("手机信息.xml");        //显示xml文件        dom4j.showInfo();    }    // 获得dom树    public void getDom() {        //通过reader获得Dom树        SAXReader reader = new SAXReader();        try {            dom = reader.read("收藏信息.xml");        } catch (DocumentException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    // 保存xml文件    public void saveXml(String path) {        //设置编码格式        //可以直接使用无参构造,效果也一样        //OutputFormat encoding=new OutputFormat();        OutputFormat encoding = OutputFormat.createPrettyPrint();        encoding.setEncoding("gb2312");        Writer writer = null;        try {            writer = new FileWriter(path);            //使用XMLWriter类进行dom树的输出            XMLWriter writerXml = new XMLWriter(writer, encoding);            //使用Write()进行dom树的写            writerXml.write(dom);            //最后关闭相关流            writerXml.close();            writer.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    // 显示xml文件信息    public void showInfo() {        //获得dom树的根节点        Element BrandElements = dom.getRootElement();        //获得元素的Iterator集合        Iterator elementIterator = BrandElements.elementIterator();        //对Interator集合进行遍历        while (elementIterator.hasNext()) {            Element brandElement = (Element) elementIterator.next();            //获得元素的属性            String brand = brandElement.attributeValue("name");            //继续从上一个节点获得下一节点Iterator集合            Iterator typeElements = brandElement.elementIterator();            while (typeElements.hasNext()) {                Element typeElement = (Element) typeElements.next();                String type = typeElement.attributeValue("name");                System.out.println("手机:" + brand + ",型号" + type);            }        }    }    // 添加节点    public void addNode() {        //获得根节点        Element Root = dom.getRootElement();        //添加Brand元素        Element brand = Root.addElement("Brand");        //为Brand元素添加属性        brand.addAttribute("name", "三星");        //继续在新加元素添加Type元素        Element type = brand.addElement("Type");        //为Type元素添加属性        type.addAttribute("name", "note");    }    // 修改属性,添加ID属性    public void modify() {        Element root = dom.getRootElement();        Iterator elementIterator = root.elementIterator();        int i = 0;        while (elementIterator.hasNext()) {            Element brand = (Element) elementIterator.next();            brand.addAttribute("id", (++i) + "");        }    }     //修改三星为SAMSUNG    public void modifySan() {        Element rootElement = dom.getRootElement();        Iterator elementIterator = rootElement.elementIterator();        while (elementIterator.hasNext()) {            Element brand = (Element) elementIterator.next();            if (brand.attributeValue("name").equals("三星")) {                brand.addAttribute("name", "SAMSUNG");            }        }    }     // 删除SAMSUNG元素    public void delete() {        Element rootElement = dom.getRootElement();        Iterator elementIterator = rootElement.elementIterator();        while (elementIterator.hasNext()) {            Element brand = (Element) elementIterator.next();            if (brand.attributeValue("name").equals("SAMSUNG")) {                brand.getParent().remove(brand);            }        }    }}

 

转载于:https://www.cnblogs.com/binglong180/p/7512142.html

你可能感兴趣的文章