XML的解析方式3——JDOM方式解析


参考 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

XML的解析方式

  1. DOM解析
  2. SAX解析
  3. JDOM解析

JDOM解析方式

【优点】

  1. 使用具体类而不是接口,简化了DOM的API。
  2. 大量使用了Java集合类,方便了Java开发人员。

【缺点】

  1. 没有较好的灵活性。
  2. 性能较差。

相关代码

  1. XmlDocument接口
package com.vincient.test;

/**
 * @Author: Vincient
 * @Description:
 * @Date: 2018/十月/30
 **/
public interface XmlDocument {
    public void parseXml(String fileName);
}

  1. JDomDemo类
package com.vincient.test;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

import java.io.IOException;
import java.util.List;

/**
 * @Author: Vincient
 * @Description:
 * @Date: 2018/十一月/02
 **/
public class JDomDemo implements XmlDocument {

    @Override
    public void parseXml(String fileName) {
        SAXBuilder builder = new SAXBuilder();
        try {
            Document document = builder.build(fileName);
            Element users = document.getRootElement();
            List userList = users.getChildren("user");
            for (int i = 0; i < userList.size(); i++) {
                Element user = (Element) userList.get(i);
                List userInfo = user.getChildren();
                for (int j = 0; j < userInfo.size(); j++) {
                    System.out.println(((Element) userInfo.get(j)).getName() + ":" + ((Element) userInfo.get(j)).getValue());
                }
                System.out.println();
            }
        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        JDomDemo jDomDemo = new JDomDemo();
        jDomDemo.parseXml("此处为文件uri");
    }
}

  1. user.xml
<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user id="0">
        <name>Alexia</name>
        <age>23</age>
        <sex>Female</sex>
    </user>
    <user id="1">
        <name>Edward</name>
        <age>24</age>
        <sex>Male</sex>
    </user>
    <user id="2">
        <name>wjm</name>
        <age>23</age>
        <sex>Female</sex>
    </user>
    <user id="3">
        <name>wh</name>
        <age>24</age>
        <sex>Male</sex>
    </user>
</users>
  1. 执行结果
name:Alexia
age:23
sex:Female

name:Edward
age:24
sex:Male

name:wjm
age:23
sex:Female

name:wh
age:24
sex:Male


猜你喜欢

转载自blog.csdn.net/weixin_42908976/article/details/83657874