XML - 可扩展型标记语言

XML简介
jaxp解析XML
dom4j解析XML

xml简介

对比HTML语言:

M6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MzA0ODUx,size_16,color_FFFFFF,t_70#pic_center)

 
 

xml基本语法

文档语法

在这里插入图片描述
 
xml元素
在这里插入图片描述

 
xml属性
在这里插入图片描述

 
xml注释
在这里插入图片描述

 
xml特殊字符
在这里插入图片描述

在这里插入图片描述

 
 

xml-CDATA

<![CDATA[ 内容  ]]>

在这里插入图片描述

 
 

PI指令:引入CSS样式

 写法: <?xml-stylesheet type="text/css" href="css的路径"?>

在这里插入图片描述

 
 

xml的约束

 
 

dtd约束

在这里插入图片描述
 
 

dtd的快速入门

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE person SYSTEM "1.dtd">
<person>
	<name>zhangsan</name>
	<age>20</age>
	<a>1111</a>
</person>
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>

约束报错:
在这里插入图片描述

 

dtd的三种引入方式
	(1)引入外部的dtd文件
		<!DOCTYPE 根元素名称 SYSTEM "dtd路径">2)使用内部的dtd文件
		<!DOCTYPE 根元素名称 
			[
			<!ELEMENT person (name,age)>
			<!ELEMENT name (#PCDATA)>
			<!ELEMENT age (#PCDATA)>
			]
		>3)使用外部的dtd文件(网络上的dtd文件)
		<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
		框架 struts2 使用配置文件 使用 外部的dtd文件
		 <!DOCTYPE struts PUBLIC  
		  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
		   "http://struts.apache.org/dtds/struts-2.0.dtd"
		>

 
 

dtd定义元素

在这里插入图片描述
 
 

dtd定义属性

在这里插入图片描述 
 

dtd定义实体

在这里插入图片描述
 
 
 
 

schema约束

schema约束特点:

  • schema符合xml的语法,xml语句
  • 一个xml中可以有多个schema,多个schema使用名称空间区分(类似于java包名)
  • dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型
    比如 年龄 只能是整数,在schema可以直接定义一个整数类型
  • schema语法更加复杂,schema目前不能替代dtd

 
 

schema的快速入门
创建一个schema文件 后缀名是 .xsd

	根节点 <schema>
	 
	在schema文件里面
		** 属性  xmlns="http://www.w3.org/2001/XMLSchema"
			- 表示当前xml文件是一个 约束文件 (schema文件为约束文件,xml为被约束文件)
			
		** targetNamespace="http://www.itcast.cn/20151111"
			- 使用schema约束文件,被约束文件通过这个地址引入约束文件

		** elementFormDefault="qualified"
			- 

	步骤
		(1)看xml中有多少个元素
			<element>
			
		(2)看简单元素和复杂元素  
			
			* 如果复杂元素
			
			<complexType>
					<sequence>
						子元素
					</sequence>
			</complexType>
			
		(3)简单元素
			
			写在复杂元素的<sequence>中
		
			<element name="person">
			<complexType>
			<sequence>
					<element name="name" type="string"></element>
					<element name="age" type="int"></element>
			</sequence>
			</complexType>
			</element>
	
			另外 	<any></any>:表示任意元素
			
		(4)在被约束文件里面引入 约束文件
			<根标签 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
						xmlns="http://www.itcast.cn/20151111"
			xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">


			** xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
				-- 表示xml是一个 被约束文件  :xsi为xmlns下的xsi别名
				
			** xmlns="http://www.itcast.cn/20151111"
				-- 使用的约束文件的命名空间为 "http://www.itcast.cn/20151111"
				
			** xsi:schemaLocation="http://www.itcast.cn/20151111 1.xsd">
				-- 命名空间 空格 约束文档的地址路径
		





	* 简单元素位于的标签含义
	<sequence>:表示元素的出现的顺序
	<all>: 元素只能出现一次
	<choice>:元素只能出现其中的一个

	
	标签属性

	简单元素属性
	maxOccurs="unbounded": 表示元素的出现的次数 unbounded无限次




	复杂元素属性
	
	可以约束属性
		* 写在复杂元素里面
		***写在 </complexType>之前
	<attribute name="id1" type="int" use="required"></attribute>
			- name: 属性名称
			- type:属性类型 int stirng
			- use:属性是否必须出现 required


		

	* 复杂的schema约束
	<company 	xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 指明是被约束文件
				xmlns = "http://www.example.org/company"		引入第一个schema文件
				xmlns:dept="http://www.example.org/department"  引入第二个schema文件
	
	
	xsi:schemaLocation=	"http://www.example.org/company company.xsd 		
			            	http://www.example.org/department department.xsd" 
			            	schema文件路径	
    >



	* 引入多个schema文件,可以给每个起一个别名

	<employee age="30">
		<!-- 部门名称 --> 
		<dept:name>100</dept:name>
		* 想要引入department约束文件里面的name,使用部门的别名 detp:元素名称
		<!-- 员工名称 -->
		<name>王晓晓</name>   
		* 不加:的标签,默认使用没有别名的xmlns (company)
	</employee>

举例
schema文件 : 1.xsd
在这里插入图片描述
xml文件 :1.xml — 不符合约束,报错
在这里插入图片描述

 
 
 
 

xml的解析简介 (通过JAVA操作xml文件)

xml的解析方式(技术):dom 和 sax

dom解析和sax解析区别:

  • dom方式解析

    • 根据xml的层级结构在内存中分配一个树形结构,
    • 把xml的标签,属性和文本都封装成对象
    • 缺点:如果文件过大,造成内存溢出
    • 优点:很方便实现增删改操作
       
  • sax方式解析

    • 采用事件驱动,边读边解析
    • 从上到下,一行一行的解析,解析到某一个对象,返回对象名称
    • 缺点:不能实现增删改操作
    • 优点:如果文件过大,不会造成内存溢出,方便实现查询操作

想要解析xml,首先需要解析器

不同的公司和组织提供了 针对dom和sax方式的解析器,通过api方式提供

  • sun公司提供了针对dom和sax解析器 jaxp (javase)
  • dom4j组织,针对dom和sax解析器 dom4j (最多使用)
  • jdom组织,针对dom和sax解析器 jdom (基本没人用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值