java --XML

 XML

  • XML 指可扩展标记语言(EXtensible Markup Language)

  • XML 是一种标记语言,很类似 HTML

  • XML 标签没有被预定义。您需要自行定义标签

  • XML 被设计为具有自我描述

 

XML Vs  HTML

比较内容

HTML

XML

可扩展性

不具有可扩展性

是元标记语言,可以定义新的标记语言,标记

由用户定义

侧重点

侧重于信息的表现形式,

数据显示为什么格式为HTML所关注

侧重于结构化的描述信息,数据是什么为XML所关注

语法

不严格(嵌套、配对)

严格要求嵌套、配对严格按照DTD的要求

可读、可维护

难于阅读,难于维护

结构清晰,便于阅读与进行维护

数据本身显示

数据与显示合在一起

数据与显示分离

可重用

可重用性很高

应用常见:

    配置文件(主要)

    存放数据

 

语法规则:

    所有的 XML 元素都必须有一个关闭标签

    XML 标签对大小写敏感

    XML 必须正确嵌套

    XML 属性值必须加引号

 

实体引用

 

 

 

 

语法

 

DTD约束

常见xml约束: DTD , Schema

DTD(Document Type Definition) , 文档类型定义 , 用来约束XML文档. 规定文档中的元素的名称 , 子元素的名称及顺序 , 元素的属性等.

重点要求:

 开发中,我们很少自己编写DTD约束文档, 通常我们都是通过框架提供的DTD约束文档,编写对应XML文档, 常见框架使用DTD约束有: struts2.hibernate等.

 

通过提供的 DTD  "web-app_2_3.dtd"编写XML

 

<?xml version="1.0"?>

若需要在xml使用当前的DTD约束, <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">

 

有了约束之后,借助工具的提示功能

报错

    提示信息为servlet-name 和 servlet-class必须出现一次

 

有了约束条件之后 不能像之前的xml那样比较自由的写内容.

 

元素声明:

 

 

Schema约束

 

相较于DTD

是新的XML文档约束;

  • Schema要比DTD强大很多,是DTD的替代者

  • 本身也是XML文档,但Schema文档扩展名为xsd,而不是xml.

  • 功能更强大,数据类型更完善.

  • 支持名称空间.(与包类似,区分同样的属性)

 

命名空间(语法)

 

    如果一个XML文档中使用多个Schema文件,而这些Schema文件中定义了相同名称的元素时就会出现名字

冲突. 就像一个java文件中使用了 import  java.util.* 和 import  java.sql.* 时 ,在使用Data类时,那么就不明确

Date是哪个包下的Date了.

    总之名称空旷就是用来处理元素和属性的名称冲突问题,与Java 中的包是同一用途 . 如果每个元素和属性都

有自己的名称空间,那么就不会出现名字冲突的问题,就像是每个类都有自己所在的包一样, 那么类就不会出现冲突. 

 

 

解析方式和解析器

常见的三种解析方式,

1.DOM: 要求解析器把整个XML文档装载到内存,并解析成一个Document 对象,

    a) 优点: 元素与元素之间保留结构关系,故可以进行增删改查操作

    b)XML文档过大,可能出现内存溢出显现.

 

2.SAX是一种速度更快,更有效的方法,它逐行扫描文档,一边扫描一边解析.并以事件驱动的方式进行具体解析,每

执行一块,都将触发对应的事件(了解)

    a) 优点 : 处理速度快

    b) 缺点 : 只能读,逐行后将释放资源

 

3.PULL : Android 内置的XML解析方式,类似SAX. (了解)

 

解析器: 就是根据不同的解析方式提供的具体实现. 有的解析器操作过于繁琐,为了方便开发人员,有提供易于操作的解析开发包.

 

 

常见的解析开发包:

JAXP : sun公司提供支持DOM和SAX开发包

JDom

jsoup

dom4j 

 

DOM解析原理及结构模型

    XML DOM 和 HTML DOM类似 , XML DOM 将整个XML文档加载到内存 , 生成一个DOM树, 并获得一个Document对象,通过Document 对象就可以对DOM进行操作.

 

 

DOM 中的核心概念就是节点 , 在XML 文档中的元素 , 属性 ,文本等 ,在DOM中都是节点

 

    

API使用

    

    如果需要使用dom4j , 必须导入jar包

        

 

dom4j -----> 必须使用核心类 SaxReader 加载 XML 文档  -------->获得 Document, 通过Document对象获得文档的根元素 --------------->进行操作

 

    常用API :

 

     1.    SaxReader 对象

            a) read( ... )    加载执行 xml 文档

     2.    Document 对象  

            a)getRootElement( ) 获得根元素

     3.    Element     对象

        1. elements(... )    获得指定名称的所有子元素, 可以不指定名称.

        2. element( ... )      获得指定名称第一个子元素. 可以不指定名称.  

        3. getname( )     获得当前元素的元素名

        4. attributeValue( ... )    获得指定属性名的属性值

        5. elementText( ... )    获得指定名称子元素的文本值

        6. getText( )           获得当前元素的文本内容  

 

 

已标记关键词 清除标记
相关推荐
JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象激活提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页