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

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节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值