XML 使用、命令空间、约束、解析
1.XML初识
可扩展的标记性语言 可以用一系列的标签进行表示。
作用:
1.可以作为传输数据的重要标准。
2.可以作为文件的配置信息(Spring MybatisXML配置文件)。
3.可以作为持久化(数据的持久化)。
4.简化平台变更(可以跨平台)。
2.XML与Html的区别
XML是用来传输数据的;
Html是用展示数据;
XML语法
xml的头
xml的注释
<!-- -->
注释不能注释嵌套
标签只能有一个根标签,并且必须成对的标签嵌套;
标签之间可以嵌套,但是不可以交叉嵌套;
*属性:
只能放在起始标签里面,属性=“” ‘’ 可以用单引号和双引号来赋值;
XML 标签对大小写敏感;
实体:
实体 字符 简介
& lt; < Less than & gt; > Greather than
& amp;
& mpersand
& apos; ' Apostrophe
& quot; " Quotation mark
自定义实体
在中括号里面定义实体
解析
cdata不解析
<![CDATA[原样输出的数据]]>
pcdata解析数据
<![PCDATA[原样输出的数据]]>
引入样式表(有表述数据转为展示数据)
href:css的位置
type:文本的类型
命名空间
也可以不要前缀,直接定义默认的命名空间:
DTD约束
描述元素的语法格式:
<!DOCTYPE 根标签[
<!ELEMENT studnet(name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
EMPTY:元素不能包含子元素和文本(空元素)
(#PCDATA):可以包含任何字符数据,但是不能在其中包含任何子元素
ANY:元素内容为任意的,主要是使用在元素内容不确定的情况下
修饰符:() | + * ? , () 用来给元素分用组 | 在列出的元素中选择一个 +表示该元素最少出现一次,可以出现多次 (1或n次) *表示该元素允许出现零次到任意多次(0到n次) ?表示该元素可以出现,但只能出现一次 (0到1次) ,对象必须按指定的顺序出现
属性
<ATTLIST 属性名称 类型 特点>
属性类型: 1. CDATA:属性值可以是任何字符(包括数字和中文) 2. ID:属性值必须唯一,属性值必须满足xml命名规则 3. IDREF:属性的值指向文档中其它地方声明的ID类型的值。 4. IDREFS:同IDREF,但是可以具有由空格分开的多个引用。 5. enumerated:(枚举值1|枚举值2|枚举值3...),属性值必须在枚举值中
属性特点: 1. #REQUIRED:元素的所有示例都必须有该属性 2. #IMPLIED :属性可以不出现 3. default-value:属性可以不出现,但是会有默认值 4. #FIXED :属性可以不出现,但是如果出现的话必须是指定的属性值
引入DTD约束
严格区分大小写
属性DTD的约束
<!DOCTYPE 根标签[
<!ELEMENT studnet (name,age)>
<!ELEMENT namE(#PCDATA)>
<!ELEMENT age (#PCDATA)>
<student id ID #REQUIRED>
]>
属性类型: 1. CDATA:属性值可以是任何字符(包括数字和中文) 2. ID:属性值必须唯一,属性值必须满足xml命名规则 3. IDREF:属性的值指向文档中其它地方声明的ID类型的值。 4. IDREFS:同IDREF,但是可以具有由空格分开的多个引用。 5. enumerated:(枚举值1|枚举值2|枚举值3...),属性值必须在枚举值中
属性特点: 1. #REQUIRED:元素的所有示例都必须有该属性 2. #IMPLIED :属性可以不出现 3. default-value:属性可以不出现,但是会有默认值 4. #FIXED :属性可以不出现,但是如果出现的话必须是指定的属性值
引入内部DTD约束
引入本地的DTD约束
引入公共的DTD约束
各个节点
XML文档只有一个根节点
XML中每个元素都是一个元素节点
XML中每个文本都是一个文本节点
XML中每个属性都是一个属性节点
XML中每个注释都是一个注释节点
DOM解析
sax解析
基于事件的解析!
不需要讲整个文件加载到内存,只需要把需要的内容解析读到内存,解析过的不能在进行解析,只能顺序读取,不能讲数据写入到xml的文件里面
解析器:
jdk自带的解析器:
DocumentBuilderFactory Factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = Factory.newDocumentBuilder();
Document parse = documentBuilder.parse(new File("E:\\java工程 \\Test1\\day02\\src\\main\\java\\DOMtest\\class.xml"));
NodeList childNodes = parse.getChildNodes();//获取的是decument节点
DOM4j解析器