java解析XML

使用dom4j解析xml
一、下载dom4j.jar包,下载地址:https://dom4j.github.io/
向新建的项目中导入该jar包
二、使用dom4j解析xml
新建demo.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<stus>
    <stu>
        <name>张三</name>
        <age>18</age>
        <address>北京</address>
    </stu>
    <stu>
        <name>李四</name>
        <age>20</age>
        <address>邯郸</address>
    </stu>
</stus>

新建类文件MainTest

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

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

public class MainTest {
    public static void main(String[] args){
        try{
            //1.创建Sax读取对象
            SAXReader reader = new SAXReader();
            //2.指定解析的xml源
            Document document = reader.read(new File("src/demo.xml"));

            //3.获得元素
            //根元素
            Element rootElement = document.getRootElement();

            //根元素下面的子元素
            //rootElement.element("age");
            //System.out.println(rootElement.element("stu").element("age").getText());

            //获取根元素下面的所有子元素
            List<Element> elements = rootElement.elements();
            for(Element element:elements){
               String name = element.element("name").getText();
               System.out.println(name);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

运行结果:
在这里插入图片描述

三、添加Xpath路径语言
Dom4j支持xpath的写法,xpath是xml的路径语言,支持在解析xml时,能够快速的定位到具体的某一个元素。
下载jaxen.jar包:http://www.java2s.com/Code/Jar/j/jaxen.htm 并导入
具体使用方法:XPath语法

将MainTest类文件更改为:

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

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

public class XpathTest {

    public static void main(String[] args){

        try{
            //1.创建Sax读取对象
            SAXReader reader = new SAXReader();
            //2.指定解析的xml源
            Document document = reader.read(new File("src/demo.xml"));

            //3.获得元素
            //根元素
            Element rootElement = document.getRootElement();

            Element nameElement = (Element) rootElement.selectSingleNode("//name"); //结果:张三
            System.out.println(nameElement.getText());

            //获取文档里的所有name元素
            List<Node> list = rootElement.selectNodes("//name");
            for(Node node:list){
                System.out.println(node.getText());
            }//结果:张三,李四
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值