java解析xml原理方法对比示例,XML基础

本文介绍了XML的基础知识,包括XML的用途、语法和与HTML的区别。接着,详细讲解了DTD和Schema的区别及作用。重点讨论了Java中解析XML的几种方法,如DOM、SAX、StAX和JDOM,分析了它们的原理、特点、性能比较,并给出了代码示例。最后,探讨了不同解析模型(推模型和拉模型)的概念和应用场景。
摘要由CSDN通过智能技术生成

XML是什么

  可扩展的标记语言

  XML能干什么

  描述数据、存储数据、传输(交换)数据。

XML有什么
  • 元素
  • 属性
  • 实体
  • PCDATA :被解析的字符数据(parsed character data),PDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记
  • CDATA :字符数据(character data),CDATA 是不会被解析器解析的文本

 

XML与HTML区别:目的不一样

    XML 被设计用来描述数据,其焦点是数据的内容。

HTML 被设计用来展示数据,其焦点是数据的外观。

HTML可以不关闭标签(即标签可以不成对出现),但XML必须关闭标签(即标签必须成对出现)。

HTML中的标签标识文本如何展示,而XML中的标签标识文本是什么含义(什么类型的文本)。

 

XML注意

XML是无作为的,不会做任何事情,只用于描述数据、存储数据、传输(交换)数据。

如何展示和使用XML数据就需要程序员根据需求来做解析数据并展示和使用。

 

XML文档节点类型

u     文档(document)

u     元素(element)

u     属性(attribute)

u     文本(PCDATA--parsed character data)

u     注释(comment)

u     DOCTYPE :主要验证文档内容的正确性

u     实体(ENTITIES)

u     CDATA(character data)

XML语法
1、声明:<?xml version="1.0" encoding="UTF-8"?>
2、根节点:必须有一个根节点
3、标签:标签必须有结束且区分大小写,标签必须顺序嵌套
4、属性:必须引号引起值
5、空格会被保留,HTML空格最多保留一个
6、命名规则:命名必须见名知意

     a)    名字可包含字母、数字以及其他的字符 

     b)    名字不能以数字或者标点符号开始

     c)    名字不能以字符“xml”(或者XML、Xml)开始

7、名字不能包含空格 
8、 不应在 XML 元素名称中使用 ":" ,这是由于它用于命名空间(namespaces)的保留字。
9、标签优先于属性。

  10、XML 命名空间可提供避免元素命名冲突的方法。

  11、CDATA:字符数据,<![CDATA[字符数据]]> ,字符数据不进行转义

  12、实体:&实体;

 

DTD
是什么

   DTD(DocType Definition 文档类型定义)的作用是定义 XML 文档的合法构建模块。

它使用一系列的合法元素来定义文档结构。

能干什么

DTD(文档类型定义)的作用是约定XML格式。

主要有什么

   元素、属性、实体定义

 

DTD引用方式
  内部
    <!DOCTYPE 根元素 [元素声明]>
  外部私有的  SYSTEM   一般是我们自己定义的,可能只是一个公司内部使用
    <!DOCTYPE 根元素 SYSTEM "dtd文件位置">
  外部公有的  PUBLIC   一般是一些标准,可能非常多的人用
    <!DOCTYPE 根元素 PUBLIC "命名空间" "dtd文件位置">
首先根据“命名空间”去问环境要相应的dtd文件,如果有,直接提供,如果没有再根据dtd文件位置找。
格式
   <!ELEMENT>  描述元素之间关系
       定义
               <!ELEMENT 元素名称 (元素内容)>
 
       顺序:(seq1,se2) 必须按顺序
  (or1|or2)  两个选一个
           个数:?          零个或一个
                 标签       必须一个
                 *          零个或多个
                 +          一个或多个

 

   <!ATTRLIST> 描述元素属性
      格式:    
             <!ATTLIST 元素名称 属性名称 属性类型 默认值>
 
    属性类型:

CDATA

值为字符数据 (character data)

(en1|en2|..)

此值是枚举列表中的一个值

ID

值为唯一的 id

IDREF

值为另外一个元素的 id

IDREFS

值为其他 id 的列表

NMTOKEN

值为合法的 XML 名称

NMTOKENS

值为合法的 XML 名称的列表

ENTITY

值是一个实体

ENTITIES

值是一个实体列表

#PCDATA

定义文本元素,没有子元素

 

 

 

 

 

 

 

 

 

 

 

 

 

    默认值:

解释

属性的默认值

#REQUIRED

属性值是必需的

#IMPLIED

属性不是必需的

#FIXED value

属性值是固定的


 

 

 

 

 

 

    实体:
           <!ENTITY 实体名称 "实体的值">
Schema
是什么

    XML Schema 是基于 XML 的 DTD 替代者。XML Schema 描述 XML 文档的结构。XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。

   DTD不是通过XML语法定义文档结构, 不能定义数据类型和限制

  Schema通过XML语法定义文档结构,可以定义数据类型和限制

能干什么

       约定XML格式

 

  • 定义可出现在文档中的元素
  • 定义可出现在文档中的属性
  • 定义哪个元素是子元素
  • 定义子元素的次序
  • 定义子元素的数目
  • 定义元素是否为空,或者是否可包含文本
  • 定义元素和属性的数据类型
  • 定义元素和属性的默认值以及固定值

 

为何使用Schema?

XML Schema 是 DTD 的继任者

我们认为 XML Schema 很快会在大部分网络应用程序中取代 DTD。

理由如下:

  • XML Schema 可针对未来的需求进行扩展
  • XML Schema 更完善,功能更强大
  • XML Schema 基于 XML 编写
  • XML Schema 支持数据类型和限制
  • XML Schema 支持命名空间

 

有什么

       元素、属性、限定的定义。

    可以约束我们写XML文件。

 

Schema引用方式
<users xmlns="命名空间"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="命名空间  Schema位置">
    如何找Schema,和DTD一样,首先根据命名空间问环境要,找不到再根据Schema位置找。
 
 
</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值