Java操作XML的五种方式之DOM4J和 digester

1、了解XML

1. XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它和JSON都是一种数据交换格式。
作用:解析XML文档,创建XML文档。

2、什么是可扩展标记语言?

· 可扩展标记语言是一种很像超文本标记语言的标记语言。

· 它的设计宗旨是传输数据,而不是显示数据。

· 它的标签没有被预定义。您需要自行定义标签。

· 它被设计为具有自我描述性。

· 它是W3C的推荐标准。

3、解析XML文档的五种方式: 五种方法解析XML文档:Dom、SAX、JDOM、dom4j 、degister

准备xml文件

<?xml version="1.0" encoding="UTF-8"?>
    <languages cat="it">
        <lang id="1">
            <name>Java</name>
            <ide>Eclipse</ide>
        </lang>
        <lang id="2">
            <name>Swift</name>
            <ide>Xcode</ide>
        </lang>
        <lang id="3">
            <name>c#</name>
            <ide>Visual Studio</ide>
        </lang>
    </languages>

4、dom4j 、degister

 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory

  dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。

4.1、读取xml文件

public void readXml() throws DocumentException {
        //1.说去SAXReader对象
        SAXReader reader = new SAXReader();
        //2.获取Document对象
        Document document = reader.read(this.getClass().getClassLoader().getResourceAsStream("xml/languages.xml"));
        //3.获取根元素
        Element rootElement = document.getRootElement();
        System.out.println("根元素名称:"+rootElement.getName());
        String cat = rootElement.attributeValue("cat");
        System.out.println("属性为cat的值为:"+cat);
        System.out.println("-------------------------");
        //4.获取其下的子元素
        List<Element> elements = rootElement.elements();
        for (int i = 0; i < elements.size(); i++) {
            Element element = elements.get(i);
            System.out.println("第"+i+"个元素的名称:"+element.getName());
            System.out.println("属性id为:"+element.attributeValue("id"));
            List<Element> children = element.elements();
            for (int j = 0; j < children.size(); j++) {
                Element ele = children.get(j);
                System.out.println(ele.getName()+"="+ele.getText());
            }
            System.out.println("-------------------------");
        }
    }

4.2、创建xml文件

public void createXml() throws IOException {
        //1.获取文档
        Document document = DocumentHelper.createDocument();
        //2.创建跟节点
        Element languages = DocumentHelper.createElement("languages");
        languages.addAttribute("cat","it");
        document.setRootElement(languages);
        //3.添加子节点
        Element lang = languages.addElement("lang");
        lang.addAttribute("id","1");
        Element name = lang.addElement("name");
        name.setText("Java");
        Element ide = lang.addElement("ide");
        ide.setText("Eclipse");
        //输出
        //输出到控制台
        XMLWriter writer = new XMLWriter();
        writer.write(document);
        //输出到文件
        OutputFormat format = new OutputFormat("    ",true);
        XMLWriter out = new XMLWriter(new FileOutputStream("newxml.xml"),format);
        out.write(document);
    }

digester

digester原来为struts中解析xml的方式,由于其比较好,被apache单独拿出变为一个小型框架。

其使用的原理为sax。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值