如何通过java代码解析xml文件

  1. 什么是xml?
    xml指可扩展标记语言(Extensible Markup Language),是独立于硬件和软件的信息传输工具.
    xml应用于Web开发的多种方面,常用于简化数据的共享和存储.
    xml对大小写敏感.
  2. Java中xml解析有哪几种方式?
    DOM解析方式:
    DOM,(Document Object Model即文档对象模型)是W3C组织推荐的处理xml文件的方式.
    DOM解析器在解析XML文档时,会把xml文档中的所有元素,按照其出现的层次关系,解析成一个个的Node对象(节点).
    优点:在内存中将xml文件中的内容构造成树形结构,可以遍历和修改节点.
    缺点:如果文件比较大,内存有压力,解析的时间会比较长.
    SAX解析方式:
    SAX,(Simple Api For Xml)是一种xml解析的替代方法.
    相对于DOM,SAX是一种速度更快,更有效的方式.
    SAX逐行扫描文档,一边扫描,一遍解析.而且相对于DOM,SAX可以在解析文档的任意时刻停止解析.
    优点:解析可以立即开始,速度快,内存没有压力
    缺点:不能对节点做修改.

以下为java中通过SAX解析xml文件的代码.
在使用SAX解析xml文件的时候需要导入dom4j jar包.

123.xml文件代码

<?xml version="1.0" encoding="UTF-8"?>
<list>
    <emp id="1">
        <name>张三</name>
        <age>34</age>
        <gender></gender>
        <salary>3000</salary>
    </emp>
    <emp id="2">
        <name>李四</name>
        <age>21</age>
        <gender></gender>
        <salary>4000</salary>
    </emp>
    <emp id="3">
        <name>王五</name>
        <age>46</age>
        <gender></gender>
        <salary>6500</salary>
    </emp>
    <emp id="4">
        <name>赵六</name>
        <age>28</age>
        <gender></gender>
        <salary>4400</salary>
    </emp>
    <emp id="5">
        <name>钱七</name>
        <age>53</age>
        <gender></gender>
        <salary>12000</salary>
    </emp>
</list>

java代码

package com.year15.month12;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class SAXDemo {
    public static void main(String[] args) {try {
        // 创建SAXReader
        SAXReader reader = new SAXReader();
        // 读取指定文件
        Document doc = reader.read(new File("123.xml"));
        // 获取根节点list
        Element root = doc.getRootElement();
        // 获取list下的所有子节点emp
        List<Element> elements = root.elements();
        //遍历集合取出没个节点的内容信息.
        for (Element element : elements) {
            System.out.println(element);
            String name = element.elementText("name");
            int age = Integer.parseInt(element.elementText("age"));
            System.out.println(name + age);
            }
        } catch (Exception e) {
        e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值