XML 使用、命令空间、约束、解析

1.XML初识

可扩展的标记性语言 可以用一系列的标签进行表示。

作用:

1.可以作为传输数据的重要标准。

2.可以作为文件的配置信息(Spring MybatisXML配置文件)。

3.可以作为持久化(数据的持久化)。

4.简化平台变更(可以跨平台)。

2.XML与Html的区别

XML是用来传输数据的;

Html是用展示数据;

XML语法

xml的头

<?xml version="1.0" encoding="utf-8"?>

xml的注释

<!--  -->

注释不能注释嵌套

标签只能有一个根标签,并且必须成对的标签嵌套;

标签之间可以嵌套,但是不可以交叉嵌套;

*属性:

只能放在起始标签里面,属性=“” ‘’ 可以用单引号和双引号来赋值;

XML 标签对大小写敏感;

实体:

实体 字符 简介

& lt; < Less than & gt; > Greather than

& amp;

& mpersand

& apos; ' Apostrophe

& quot; " Quotation mark

自定义实体

在中括号里面定义实体

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root[
<!ENTITY company "杰普软件科技有限公司">
]>
<root>
<name>&company;</name>
</root>
<!DOCTYPE 根标签[
<!ENTITY 实体的名字 “”实体的内容>
]>

解析

cdata不解析

<![CDATA[原样输出的数据]]>

 

pcdata解析数据

<![PCDATA[原样输出的数据]]>

 

引入样式表(有表述数据转为展示数据)

<?xml-stylesheet href="test.css" type="text/css"?>

href:css的位置

type:文本的类型

命名空间

<?xml version="1.0" encoding="utf-8"?>
<x:table xmlns:x=“www.cqf.com”>
   
<tr>
<td>hello</td>
<td>world</td>
</tr>
</x:table>

也可以不要前缀,直接定义默认的命名空间:

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约束

 
<!DOCTYPE students SYSTEM "dtd/students.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约束

<!DOCTYPE 根元素 SYSTEM "DTD文件的路径">

引入公共的DTD约束

<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">

各个节点

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解析器

posted @ 2020-09-10 15:57  乘清风  阅读(130)  评论(0编辑  收藏  举报