xml解析的多种方式

1.解析xml

java解析xml的4种经典方法:

https://bbs.csdn.net/topics/290027113

http://www.blogjava.net/orangelizq/archive/2009/07/19/287330.html

1.dom解析

1.dom组成部分

DOM 定义了访问诸如 XML 和 XHTML 文档的标准。

DOM有3个部分组成:

 在此只介绍xml DOM

 2.DOM文档树

其中每个属性、标签、文本、根标签都称之为节点Node。

 

 3.API介绍

使用DOM方式解析xml时不需要导入额外的jar文件,因为jdk已经包含了DOM方式解析需要的接口与类了,javax.xml.parser包中包含了创建文档Document的类,而org.w3c.dom包中包含了一些与节点树相关的类。

javax.xml.parser包结构如下:

org.w3c.dom包结构如下:

 其中,

Node:代表文档树中的一个单独的节点。

 Element:代表标签

Document:代表文档树

注意:

使用dom解析时,无法直接使用document对象获取根标签元素。但是使用jdom时可以

4.解析xml实例

package dom;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomTest2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //1.创建DocumentBuilderFactory对象
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        //2.根据factory创建DocumentBuilder对象
        DocumentBuilder builder=null;
        //3.创建document文档对象
        Document document=null;
        //4.加载读取的xml文件
        File f=new File("books.xml");
        if(!f.exists()) {
            System.out.println("xml文件不存在");
        }
        try {
            builder=factory.newDocumentBuilder();
            document=builder.parse(f);
            NodeList nodeList=document.getElementsByTagName("bookstore");
            Node book1=nodeList.item(0);
            Node book_name=book1.getFirstChild();
            
            System.out.println();
            
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

 

 注意:DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。

2.SAX解析

 SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂

1.工作原理

 

 2.解析xml步骤

 

 

3.JDOM解析

使用这种方式解析时,需要导入jdom-xxx.jar文件

1.JDOM简介

 

 DOM的缺点主要是来自于由于Dom是一个接口定义语言(IDL),它的任务是在不同语言实现中的一个最低的通用标准,并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内,这标志着JDOM成为了JAVA平台组成的一部分。

在 JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。

2.JDOM组成部分

 3.解析步骤

 一共2步:

1.创建SAXBuilder,使用构造方法创建。

2.创建Document,通过SAXBuilder对象的build()方法创建。

获得document对象之后就可以进行相应的操作了。

4.解析xml实例

package jdom;

import java.io.File;
import java.io.IOException;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class JDOM_demo {
    public static void main(String[] args) {
        SAXBuilder builder=new SAXBuilder();
        try {
            Document document=builder.build(new File("books.xml"));
            Element rootElement=document.getRootElement();
            //获取根标签的名称,注意不是属性名称
            String name=rootElement.getName();
            System.out.println(name);
        } catch (JDOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

4.DOM4J解析

 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。

1.解析程序步骤

1.获得文档对象

 2.获得根标签元素

 3.通过xpath表达式寻找特定的节点

XPATH路径表达式的语法详细介绍请跳转https://www.runoob.com/xpath/xpath-syntax.html

 4.使用快速循环方法遍历文档树

 这个是遍历整个文档的好方法

5.创建文档对象

 6.String对象与文档对象Document之间的转换

1.String转换为Document

 

 2.Document转换为String类型

 7.用XSLT转换文档

2.生成xml

java生成xml的4种经典方法:https://blog.csdn.net/qq_39237801/article/details/78378486

posted on 2021-03-15 11:24  _ZXP  阅读(236)  评论(0编辑  收藏  举报

导航