java XML文档

1.什么是XML

XML是可扩展的标记语言,XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。XML是W3C的推荐标准。服务器通过uri中的地址根据XML中的映射配置来找到浏览器所需的资源,它现在常被用做配置文件。

2 XML语法

2.1 XML文档声明

(1)文档声明必须为<?xml开头,以?>结束;

(2)文档声明必须从文档的0行0列位置开始

(3)一般开头的version表示XML文档的版本,encoding表示当前文档的编码方式。

2.2 元素、属性、注释

(1)元素就是由标签组成的,里面可以继续嵌套元素等。

(2)属性必须出现在元素的开始标签中,且不能出现同名属性

(3)XML注释与HTML注释相同。

2.3 转义字符

有些符号不能在元素体内使用,需用转义符,如<符号要用&It;

要是很多元素都需要转义字符的话,可以使用<![CDATA[                ]]>

3 XML约束

为了限定XML中的内容,我们通常使用xml约束(DTD与schema)。为了获取xml的内容,我们需要使用dom4j进行解析。

3.1 DTD约束

约束XML文档中元素、子元素的名称与顺序,元素的属性,常见的DTD约束有hibernate、struts2

3.1.1 DTD语法

(1)内部DTD

(2)外部DTD-本地DTD,DTD文档在本地系统上,公司内部自己使用项目

(3)外部DTD-公共DTD,DTD文档在网络上,一般都有框架提供

有时候没联网也可以是因为它会缓存到项目的(没听清)中。

3.1.2定义元素的语法

3.1.3 DTD文档的引入

(1)自定义DTD文档的引入

(2)外部DTD的引入

依次选择eclipse->window->preferences,搜索XML Catalog,选择Add。

在location中选择要加入的外部DTD的约束,将key type的类型改为URI,打开我们的DTD约束文件,将里面的<!DOCTYPE后的URI输入其中,然后确定即可。最后将<!DOCTYPE ......>整个复制到我们要添加限制的XML文件中即可。一般DTD约束在对应的jar包中也可以找到。

DTD约束


添加约束后的XML文件



3.2 Schema约束

Schema是新的文档约束,比上面的DTD功能要强大,扩展名为xsd,功能更强大,数据更完善,支持名称空间。常见的使用Schema约束的框架有Spring。

3.2.1 Schema命名空间

命名空间的出现是为了避免标签重复引起的冲突。




正常命名空间的格式为


namespace-prefix为空间的前缀

未定义前缀的命名空间被用作缺省的命名空间。

namespaceURI是命名空间的唯一标识符,命名空间的URI仅仅是唯一的标识符,推荐规范不要求,也不建议通过其获取信息。XML解析器处理命名空间URI时,也仅仅将其作为字符串。

3.2.2 案例实现


3.2.3 编写xsd约束

tagetNamespace表示给当前自定义约束文档进行起名,提供给xml文档使用。

xsi:schemaLocation=“”表示用于确定当前xml文档使用到的schema文档的位置。

当约束文档写完后即可编写实例文档了,

疑问:为什么要引入预定义的命名空间?感觉可能的解释:一个xsd文档必须要有一个名称空间,所以写一个预定义。

为什么多个命名空间只引入了一个位置,难道是约束文档中有多个命名空间吗,还是步骤4实例文档的引入是带着位置的?


4 XML文档的解析

在我们将XML编写完毕后,我们希望获取XML的内容,通过java中的IO知识是可以完成的,但是比较繁琐。所以有对应的解析器,人们根据不同的解析方式,提交对应的解析器,完成对XML的解析。

4.1解析方式和解析器

DOM:解析器把整个XML文档装载到内存,并解析成Document对象。

优点:元素与元素之间保留结构关系,可以增删查改。

缺点:XML文档过大可能内存外溢。

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

4.2 dom4j对XML进行解析




























猜你喜欢

转载自blog.csdn.net/q610376681/article/details/80774814