本帖最后由 li745547 于 2018-3-25 13:46 编辑
XML(Extensible Markup Language)可扩展白标记语言XML是一种用于标记电子文件使其具有结构性的标记语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的,但是它和Java有着相同的目标,即平台独立性。通过Java和XML的组合,可以得到一个完美的具有平台独立性的解决方案。
一、XML是什么?有什么用?
XML是指可扩展标记语言(eXtensible MarkupLanguage),它是一种标记语言。它被设计的宗旨是描述数据(XML),而非显示数据(HTML)。
目前遵循的是W3C组织于2000年发布的XML1.0规范 应用场景: 1、描述数据 2、作为配置文件存在 二、XML的基本语法
1、文档声明:很重要
在编写XML文档时,需要先使用文档声明来声明XML文档。且必须出现在文档的第一行。 作用:告知解析器,我是一个XML文档。
最简单的声明语法: <?xml version="1.0"?> 中间不要加空格,后面加?号 当我们写好的一个xml文件写入内存的时候会转换为二进制保存,这个时候会查码表,记事本保存的时候是gbk,而保存的时候默认查码表时用的是utf-8, 这个时候我们就可以用encoding属性:默认是UTF-8 <?xml version="1.0" encoding="GBK"?>,这样就可以解决乱码等问题。 standlone属性:该xml文件是否独立存在。 2、元素(标签)XML语法非常严格。不能够省略结束标签。 一个XML文档必须有且仅有一个根标签 XML中不会忽略主体内容中出现的空格和换行 元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点,但必须遵守下面的一些规范: l 严格区分大小写;<P> <p> l 只能以字母或下划线开头;abc _abc l 不能以xml(或XML、Xml等)开头----W3C保留日后使用; l 名称字符之间不能有空格或制表符;ab l 名称字符之间不能使用冒号; (有特殊用途)
3、元素的属性属性值一定要用引号(单引号或双引号)引起来 元素中属性不允许重复 4、注释XML中的注释语法为:<!--这是注释--> XML声明之前不能有注释 不允许第一行写注释(不同于java) 5、CDATA区Character Data:字符数据。 语法: <![CDATA[ 内容 ]]> 作用: 被CDATA包围的内容,都是普通的文本字符串。
6、特殊字符特殊字符 替代符号 & & < < > > " " ' &apos 7、处理指令(PI:ProcessingInstruction)(了解)XML声明就是一种处理指令 处理指令:<?指令名称 属性?> [java] view plain copy
- <?xml version="1.0" encoding="GBK"?>
- <?xml-stylesheet type="text/css" href="main.css"?>
- <world>
- <chinese>中国</chinese>
- <america>美国</america>
- <japan>小日本</japan>
- </world>
三、XML的约束
XML可以自定义。如果作为配置文件。
格式良好的XML文档:遵循XML语法的。 有效的XML文档:遵守约束的XML文档。 有效的XML文档必定是格式良好的,但良好的不一定是有效的。
1、DTD约束:(能看懂DTD即可)a、DTD(Document Type Definition):文档类型定义 作用:约束XML的书写规范
注意:dtd可以写在单独的文件中,扩展名是dtd,且必须使用UTF-8编码进行保存。
b、XML文档中如何导入DTD约束文档(XML外部) l dtd文档在本地: <!DOCTYPE 根元素 SYSTEM "dtd文件的路径"> l dtd文档在网络上: <!DOCTYPE 根元素 PUBLIC "dtd名称" "DTD文档的URL链接地址">
c、了解:也可以把DTD的内容直接写在XML文档内部。 写在XML文档内部,dtd没有编码要求。(了解)
[java] view plain copy
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE 书架 [
- <!ELEMENT 书架 (书+)>
- <!ELEMENT 书 (书名,作者,售价)>
- <!ELEMENT 书名 (#PCDATA)>
- <!ELEMENT 作者 (#PCDATA)>
- <!ELEMENT 售价 (#PCDATA)>
- <!ATTLIST 书
- ISBN ID #REQUIRED
- COMMENT CDATA #IMPLIED
- 出版社 CDATA "指令汇公司"
- >
- <!ENTITY copyright "指令汇公司">
- ]>
- <书架>
- <书 ISBN="a" COMMENT="ddd" 出版社="指令汇公司">
- <书名>Java就业培训教程</书名>
- <作者>©right;</作者>
- <售价>39.00元</售价>
- </书>
- <书 ISBN="b">
- <书名>JavaScript网页开发</书名>
- <作者>张孝祥</作者>
- <售价>28.00元</售价>
- </书>
- </书架>
练习:
[java] view plain copy
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE TVSCHEDULE [
- <!ELEMENT TVSCHEDULE (CHANNEL+)>
- <!ELEMENT CHANNEL (BANNER,DAY+)>
- <!ELEMENT BANNER (#PCDATA)>
- <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
- <!ELEMENT HOLIDAY (#PCDATA)>
- <!ELEMENT DATE (#PCDATA)>
- <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
- <!ELEMENT TIME (#PCDATA)>
- <!ELEMENT TITLE (#PCDATA)>
- <!ELEMENT DESCRIPTION (#PCDATA)>
-
- <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
- <!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
- <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
- <!ATTLIST TITLE RATING CDATA #IMPLIED>
- <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
- ]>
-
- <TVSCHEDULE NAME="NN">
- <CHANNEL CHAN="CC">
- <BANNER>AAA</BANNER>
- <DAY>
- <DATE>2015</DATE>
- <PROGRAMSLOT>
- <TIME>ee</TIME>
- <TITLE>bb</TITLE>
- <DESCRIPTION>cc</DESCRIPTION>
- </PROGRAMSLOT>
- </DAY>
- </CHANNEL>
- </TVSCHEDULE>
2、Schema约束(新,有替换DTD的趋势) |