zoukankan      html  css  js  c++  java
  • 使用Java解析XML

    一.解析的对象

    <?xml version="1.0" encoding="UTF-8"?>
    <users>
        <user id="1">
            <username>小丁</username>
            <password>123</password>
        </user>
        <user id="2">
            <username>小彭</username>
            <password>123</password>
        </user>
    </users>

    二.解析的方法介绍

      1.DOM(docuement object model)解析

       

        把所有的XML内容读到内存中,形成树状结构。这个树状结构是一个对象,名字叫docuement  

          DOM解析中的一些术语

           Doucment:整个对象(整颗数)

           Element:元素,就是标签,上面的users,user,username,password四个标签

           Attribute:属性,user标签中的id属性

              Text:文本,标签中的内容,上图最下面的叶子节点。

          Node:上面四个都可以叫Node   

          

      2.SAX(simple API for XML) 

         SAX一条条读到内存并解析

    三.代码实现

      使用dom4j(一个API,封装了我们需要的方法)   

      下载地址 https://dom4j.github.io/

      

      第一种实现 导入dom4j的jar:

    package xmlDemo;
    
    import java.io.File;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    
    public class UserTest {
        @Test
        public void DOMTest() {
            try {
                SAXReader reader = new SAXReader();
                // 读取要解析的xml文件
                Document document = reader.read(new File("src/User.xml"));
                // 获得根元素
                Element rootElement = document.getRootElement();
                // 获取根元素下的所有子元素
                List<Element> elements = rootElement.elements();
                for (Element element : elements) {
                    String username = element.element("username").getText();
                    String password = element.element("password").getText();
                    System.out.println("username=" + username + "  password=" + password);
                }
    
            } catch (DocumentException e) {
                e.printStackTrace();
            }
        }
    }

    结果:

     第二种XPath: 导入dom4j jar 包外还需导入

    package xmlDemo;
    
    import java.io.File;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
    
    public class UserTest {
        @Test
        public void XPathTest() {
            try {
                SAXReader reader = new SAXReader();
                // 读取要解析的xml文件
                Document document = reader.read(new File("src/User.xml"));
                // 获得根元素
                Element rootElement = document.getRootElement();
                //选择所有的username元素对象
                List<Element> nodes = rootElement.selectNodes("//username");
                for (Element element : nodes) {
                    System.out.println("username="+element.getText());
                }
                
    
            } catch (DocumentException e) {
                e.printStackTrace();
            }
        }
    }

    结果:

  • 相关阅读:
    Javascript的ajax
    关于跨模块拿取数据的思路AJAX实现
    JAVA的整型与字符串相互转换
    接口返回数据和数组
    接口返回数据是一条数据和一个数组的区别
    最初的代码
    http发送请求方式;分为post和get两种方式
    Java学习---- 数组的引用传递
    Java学习--数组与方法
    Java学习--数组的定义和使用
  • 原文地址:https://www.cnblogs.com/dddyyy/p/9740497.html
Copyright © 2011-2022 走看看