A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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的趋势)

1 个回复

倒序浏览
很厉害  都能全部 记录下来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马