关于XML解析

XML(Extensible Markup Language)的缩写,是一种比较流行的数据存储和交换技术。XML的优点是无论那种语言中,解析方式相似。

XML文档结构

<?xml version = "1.0" encoding ="UTF-8"?>
<songs>
    <song id="bk001">
        <author>周杰伦</author>        
        <title>一路向北</title>
        <description>后视镜里的世界,越来越远的道别</description>
    </song>
    <song id="bk002">
        <author>周杰伦</author>        
        <title>夜曲</title>
        <description>一群嗜血的蚂蚁</description>
    </song>
</songs>

XML优势:XML与文件,数据库一样,都可以实现数据的持久化存储。

数据交换:在实际运用中,由于各个计算机所使用的操作系统,数据库不同,因此数据之间的交换是很复杂的,XML格式存储的,使得不同系统,不同软件都能解析统一格式的数据并显示。

常用的几种XML的解析方式 :

DOM:DOM是基于XML的树结构来完成解析的。DOM解析文档时,会根据读取的文档,构建一个驻留内存的树结构,然后就可以使用DOM接口来操作这个树结构。因为整个文档的树结构是驻留在内存中的,所以进行各种操作比较方便,它还支持删除、修改、重新排列等多种功能。DOM解析XML的方式非常适用于多次访问XML的程序,但是DOM解析确实比较消耗资源的。

SAX:SAX是基于事件解析,他是为了解决DOM解析的资源消耗问题而出现的。他不像DOM那样需要建立一颗完整的文档树,而是通过事件处理器完成对文档的解析,因为SAX解析不用事先调入整个文档,所以它的优势是占用资源少,内存消耗少,一般在解析数据量较大的XML文档时采用这种方法

JDOM:JDOM的目的是成为java特定文档模型,  它简化与XML的交互并且比使用DOM更快。   JDOM与DOM有两方面不同:首先JDOM仅使用具体类而不使用接口,这在某方面简化了API, 但是也限制了灵活性,其次,API大量使用了Collection类,使那些已经熟悉这些类的java开发者使用起来更方便,JDOM的优势在于使用20%的精力解决80%JAVA/XML问题。

DOM4J:DOM4J是一个非常优秀的java XML api 具有性能优异,功能强大和易用的特点,同时它是一个开放源代码的软件。

解析的eg:

                

<?xml version="1.0" encoding="GB2312"?> 
<drinks>
	<Brand name ="百事可乐">
		<Type name ="碳酸饮料"/>
	</Brand>
	<Brand name ="可口可乐">
		<Type name ="碳酸饮料"/>
		<Type attribution ="黑色"/>
	</Brand>
</drinks>
package com.chunbaosheng.xml;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

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

public class parsing {

    @lombok.SneakyThrows
    public static void parsingXML() throws ParserConfigurationException {
        DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
        //获取DOM解析器
        DocumentBuilder db=dbf.newDocumentBuilder();
        Document doc=db.parse("C:/Users/Administrator/Desktop/file/123.xml");
        NodeList brandList=doc.getElementsByTagName("Brand");

        for(int i =0; i<brandList.getLength();i++){
            Node brand = brandList.item(i);
            Element element=(Element)brand;
            String attributeValue=element.getAttribute("name");
            System.out.println("attributeValue"+attributeValue);
            NodeList types=element.getChildNodes();
            System.out.println("types"+types);
            for(int j=0;j>types.getLength();j++){
                Element typeElement =((Element) types.item(j));
                String type=typeElement.getAttribute("name");
                System.out.println("饮料:"+attributeValue+type);
            }
        }
    }

    public static void main(String[] args) throws ParserConfigurationException {
        parsingXML();
    }
}

--也可以使用 其他的方式 解析 条条大路通罗马

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arenaschi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值