Java解析XML的四种方式 详解

本文阅读 5 分钟
首页 代码,Java 正文

了解XML

什么是XML?

       XML是Extensibe Markup Language的缩写,即可扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记来描述结构化数据。

XML的结构

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<PhoneInfo>
    <Brand name="华为">
        <Type name="P90">
            <Item>
                <title>标题信息</title>
                <link>链接信息</link>
                <pubDate>20xx-xx-xx</pubDate>
            </Item>
        </Type>
    </Brand>
    <Brand name="苹果">
        <Type name="iPhone Z"/>
        <Type name="iPhone ZL"/>
    </Brand>
    
</PhoneInfo>

1,XML的声明

       <?xml version="1.0" encoding="utf-8" standalone="no"?>表示XML的声明,用来标明此文件是一个XML文档。其中的version表示文档符合XML1.0规范;encoding表示文档字符集编码,默认为“UTF-8”;standalone表示该文件是否呼叫其它外部的文件。若值是 ”yes” 表示没有呼叫外部文件,若值是 ”no” 则表示有呼叫外部文件。默认值是 “yes”。        对于每一个xml文档,声明部分都是一样的。

2,标签

       在XML 中,使用<>括起来的各种标签来标记数据。如:<author>作者</author>。        注意:HTML中的标签都是固定的,不能自己随意写,而XML中标签可以直接写。

3,元素

       元素是XML文档中的主要部分。如:<title>标题信息</title>是一个元素。元素由三部分组成:开始标签、结束标签、元素内容。元素的命名规则如下:        1,名称中可以包含字母、数字或其他的字符。        2,名称中不能以数字或者标点符号开始。        3,名称不能以“xml”(Xml或XML)开始。        4,名称中不能包含空格。

4,根元素

       每个XML文档必须有且仅有一个根元素。如:<PhoneInfo></PhoneInfo> <font size="3">       根元素的特点如下: <font size="3">       1,根元素是一个完全包含文档中国其他所有元素的元素。</font> <font size="3">       2,根元素的起始标签要放在所有其他元素的起始标签之前。</font> <font size="3">       3,根元素的结束标签要放在所有其他元素的结束标签之后。</font> </font>

5,属性

       如上面的XML文档中,<Brand name="华为"></Brand>中的“name”就是属性,用来描述手机的品牌名称。属性使用双引号包裹的。

解析XML的概述

       目前解析XML文档有四种方式。        1,DOM:        DOM 是基于XML的树状结构来完成解析的,DOM解析XML时,会根据读取的文档,构建一个驻留内存的树结构,然后就可以使用DOM API来操作这个树结构。DOM解析适用于多次访问XML的程序,一次性加载完,但是DOM解析比较浪费资源。        2,SAX:        SAX是基于事件的解析,它是为了解决DOM 解析的资源消耗而出现的。SAX解析边读边加载,占用资源少。        3,JDOM:        DOM是不针对语言的,而JDOM是这对Java的特定文档模型,它简化了与XML的交互并且使用DOM 更快。JDOM优势在于:使用20%的精力解决80%的Java问题。        4,DOM4J:        DOM4J是一个非常优秀的JavaXML API,具有性能优异,功能强大和易用的特点,

DOM解析XML文档

       使用DOM解析XML文档的步骤如下:        1,创建解析器工厂对象,即:DocumentBuilderFactory对象。        2,由解析器工厂对象创建解析器对象,即DocumentBuilder对象。        3,由解析器对象对指定的XML文件进行解析,构建相应的DOM树,创建Document对象。        4,以Document对象为起点对DOM树的节点进行增加、删除、修改、查询等操作。

package cn.test;

import org.w3c.dom.*;
import org.xml.sax.SAXException;
import javax.xml.parsers.*;
import java.io.IOException;

public class Test1 { 
    public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException { 
        //得到DOM解析器的工厂实例
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        //从DOM工厂得到DOM解析器
        DocumentBuilder db=dbf.newDocumentBuilder();
        //解析XML文档,得到一个Document对象,即DOM树
        Document doc=db.parse("src\\phone.xml");
        //得到所有的Brand节点列表信息
        NodeList brandList = doc.getElementsByTagName("Brand");
        //循环Brand信息
        for(int i=0;i<brandList.getLength();i++){ 
            //获取第i个元素,并且转化为Element元素
            Element element=(Element) brandList.item(i);
            //拿到第i个Brand元素的name属性值
            String attrValue=element.getAttribute("name");
            //获取当前元素的所有的Type元素
            NodeList types=element.getElementsByTagName("Type");
            for(int j=0;j<types.getLength();j++){ 
                //先拿到子元素的节点
                Element element1 = (Element)types.item(j);
                String typeName =(element1.getAttribute("name"));
                System.out.println("手机型号是:"+typeName);
            }
        }
    }
}

       运行结果如下:

手机型号是:P90
手机型号是:iPhone Z
手机型号是:iPhone ZL

       使用DOM解析常用到的对象有:Node对象,NodeList对象,Document对象,Element对象。        Node对象:是DOM结构中最基本的对象,代表了文档树中的一个抽象节点。实际使用中很少使用Node对象,一般都是使用ELement对象。

       NodeList对象:指包含了一个或者多个节点(Node)的列表。

       Document对象:代表整个XML文档。

       Element对象:代表XML文档中年的标签元素,继承自Node,也是Node最主要的子对象。

       

DOM4J解析XML文档

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_46540738/article/details/113246308
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复