xml笔记.docx
- 文档编号:20105601
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:66
- 大小:76.95KB
xml笔记.docx
《xml笔记.docx》由会员分享,可在线阅读,更多相关《xml笔记.docx(66页珍藏版)》请在冰豆网上搜索。
xml笔记
XML语言
XML语言和作用
(1)什么是XML
什么时XML,为什么学习XML?
ExtensibleMarkupLanguage,翻译过来为可扩展标记语言。
XML技术是w3c组织发布的,目前推荐遵循是w3c组织于2000发布的xml1.0规范。
XML技术用于解决什么问题?
XML语言出现的根本目标在于描述生活中数据于数据之间的关系。
在XML语言中,它允许用户定义标签。
一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。
例如:
xmlversion=”1.0”encoding=”UTF-8”?
>
<中国>
<北京>
<海淀>海淀>
<丰台>丰台>
北京>
<湖南>
<武汉>武汉>
<荆州>荆州>
湖南>
中国>
(2)XML常见应用
XML技术除用于保存有关系的数据之外,它还经常用作软件配置文件,以描述程序模块之间的关系。
在一个软件系统中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定。
例如一个软件在启动时,它需要启动A、B两个模块,而A、B这两个模块在启动时,又分别需要A1、A2和B1、B2模块的支持,为了准确描述这种关系,此时使用XML文件最为合适不过。
XML语法详解
(1)XML语法
一个XML文件分为如下几部分内容:
文档声明:
xmlversion="1.0"encoding="UTF-8"standalone="no"?
>
元素(标签):
属性
注释:
CDATA区、特殊字符
处理指令(processinginstruction)
(2)XML语法----文档声明
在编写XML文档时,需要先使用文档声明,声明XML文档的类型。
最简单的声明语法:
xmlversion="1.0"?
>
注:
没有文档声明的xml文档为:
格式不良好的文档。
用encoding属性说明文档的字符编码:
xmlversion="1.0"encoding="UTF-8"?
>
注:
如果不注意就会出些中文乱码问题,当用记事本编辑xml文档时如果该文档的声明时encoding的编码不是gb2312那么就不能直接保存(Ctrl+s)那么就要使用另存为,在另存为时要选择编码类型与encoding属性的编码一致。
用standalone属性说明文档是否独立:
xmlversion="1.0"encoding="UTF-8"standalone="yes"?
>
(3)XML语法----元素/标签(element)
XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如:
包含标签体:
不含标签体的:
一个标签中也可以嵌套若干子标签。
但所有标签必须合理的嵌套,绝对不允许交叉嵌套,例如:
格式良好的XML文档必须有且仅有一个根标签,其它标签都是这个根标签的子孙标签。
对于XML标签中出现的所有空格和换行,XML解析程序会当作标签内容进行处理。
由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。
(4)XML语法----属性
一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:
属性值一定要用双引号(”)或单引号(’)引起来
定义属性必须遵循与标签相同的命名规范
多学一招:
在XML技术中,标签属性所代表的信息,也可以被改成子元素的形式来描述,例如:
(5)XML语法----注释
XML文件中的注释采用:
“
—注释—>”格式。
注意:
XML声明之前不能有注释,注释不能嵌套。
(6)XML语法----CDATA区、特殊字符
在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理。
遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出。
语法:
[CDATA[内容]]>
[CDATA[
]]>
对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理。
特殊字符
替代符号
&
&
<
<
>
>
“
"
‘
'
(7)XML语法----处理指令
处理指令,简称PI(processinginstruction)。
处理指令用来指挥解析引擎如何解析XML文档内容。
例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示XML文档内容。
xml-stylesheettype="text/css"href="css文件.css"?
>
处理指令必须以“<?
”作为开头,以“?
>”作为结尾,XML声明语句就是最常见的一种处理指令。
XMLDTD约束和DTD校验
(1)XML约束概述
什么是XML约束
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
为什么需要XML约束
常用的约束技术
XMLDTD、XMLSchema
(2)DTD约束快速入门
DTD(DocumentTypeDefinition),全称为文档类型定义。
文件清单:
book.dtd
ELEMENT书架(书+)>
ELEMENT书(书名,作者,售价)>
ELEMENT书名(#PCDATA)>
ELEMENT作者(#PCDATA)>
ELEMENT售价(#PCDATA)>
文件清单:
book.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPE书架SYSTEM"book.dtd">
<书架>
<书>
<书名>Java就业培训教程书名>
<作者>张孝祥作者>
<售价>39.00元售价>
书>
<书>
<书名>JavaScript网页开发书名>
<作者>张孝祥作者>
<售价>28.00元售价>
书>
书架>
编程校验XML文档正确性
IE5以上浏览器内置了XML解析工具:
Microsoft.XMLDOM,开发人员可以编写javascript代码,利用这个解析工具装载xml文件,并对xml文件进行dtd验证。
创建XML文档解析器对象
varxmldoc=newActiveXObject(“Microsoft.XMLDOM”);
开启xml校验
xmldoc.validateOnParse=“true”;
装载xml文档
xmldoc.load(“book.xml”);
获取错误信息
xmldoc.parseError.reason;
xmldoc.parseError.line
(3)编写DTD约束的两种方式
DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写。
引用DTD约束
XML文件使用DOCTYPE声明语句来指明它所遵循的DTD文件,DOCTYPE声明语句有两种形式:
当引用的文件在本地时,采用如下方式:
DOCTYPE文档根结点SYSTEM“DTD文件的URL”>
例如:
DOCTYPE书架SYSTEM“book.dtd”>。
在xml文件中手写一下。
当引用的文件是一个公共的文件时,采用如下方式:
DOCTYPE文档根结点PUBLIC“DTD名称”“DTD文件的URL”>
例如:
DOCTYPE文档根结点PUBLIC“-//SunMicrosystems.inc.//DTDWebApplication2.3//en”“
(4)DTD约束语法细节
元素定义
在DTD文档中使用ELEMENT声明一个XML元素,语法格式如下所示
ELEMENT元素名称元素类型>
元素类型可以是元素内容、或类型
如为元素内容:
则需要使用()括起来,如
ELEMENT书架(书名,作者,售价)>
ELEMENT书名(#PCDATA)>
如为元素类型,则直接书写,DTD规范定义了如下几种类型:
EMPTY:
用于定义空元素,例如
ANY:
表示元素内容为任意类型。
元素内容中可以使用如下方式,描述内容的组成关系
用逗号分隔,表示内容的出现顺序必须与声明时一致。
ELEMENTMYFILE(TITLE,AUTHOR,EMAIL)>
用|分隔,表示任选其一,即多个只能出现一个
ELEMENTMYFILE(TITLE|AUTHOR|EMAIL)>
在元素内容中也可以使用+、*、?
等符号表示元素出现的次数:
+:
一次或多次(书+)
?
:
0次或一次(书?
)
*:
0次或多次(书*)
(书)表示必须要出现一次。
也可使用圆括号()批量设置,例
ELEMENTMYFILE((TITLE*,AUTHOR?
EMAIL)*|COMMENT)>
属性定义
XML文档中的标签属性需通过ATTLIST为其设置属性
语法格式:
ATTLIST元素名
属性名1属性值类型设置说明
属性名2属性值类型设置说明
....
>
属性声明举例:
ATTLIST商品
类别CDATA#REQUIRED
颜色CDATA#IMPLIED
>
对应XML文件:
<商品类别="服装"颜色="黄色">...商品>
<商品类别="服装">...商品>
属性设置说明:
#REQUIRED:
必须设置该属性
#IMPLIED:
可以设置也可以不设置
#FIXED:
说明方式属性的取值固定为一个值,在XML文件中不能为该属性设置其他值。
但需要为该属性提供这个值。
址接使用默认值:
在XML中可以设置该值也可以不设置该属性值。
若没设置则使用默认值。
举例:
ATTLIST页面作者
姓名CDATA#IMPLIED
年龄CDATA#IMPLIED
联系信息CDATA#REQUIRED
网站职务CDATA#FIXED"页面作者"
个人爱好CDATA"上网"
>
常用属性值类型
CDATA:
表示属性值为普通文本字符串。
ENUMERATED
ID
ENTITY(实体)
属性值类型ENUMERATED
属性的类型可以是一组取值的列表,在XML文件中设置的属性值只能是这个列表中的某个值(枚举)
xmlversion="1.0"encoding="gb2312"standalone="yes"?
>
DOCTYPE购物篮[
ELEMENT肉EMPTY>
ATTLIST肉品种(鸡肉|牛肉|猪肉|鱼肉)"鸡肉">
]>
<购物篮>
<肉品种="鱼肉"/>
<肉品种="牛肉"/>
<肉/>
购物篮>
表示属性的设置值为一个唯一值。
ID属性的值只能由字母,下划线开始,不以出现空白字符。
xmlversion="1.0"encoding="gb2312"?
>
DOCTYPE联系人列表[
ELEMENT联系人列表ANY>
ELEMENT联系人(姓名,EMAIL)>
ELEMENT姓名(#PCDATA)>
ELEMENTEMAIL(#PCDATA)>
ATTLIST联系人编号ID#REQUIRED>
]>
<联系人列表>
<联系人编号="a1">
<姓名>张三姓名>
联系人>
<联系人编号="a2">
<姓名>李四姓名>
联系人>
联系人列表>
实体定义
实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。
在DTD定义中,一条
ENTITY...>语句用于定义一个实体。
实体可分为两种类型:
引用实体和参数实体。
实体定义引用实体
引用实体主要在XML文档中被应用
语法格式:
ENTITY实体名称“实体内容”>:
直接转变成实体内容
引用方式:
&实体名称
举例:
ENTITYcopyright"Iamaprogrammer">
.....
©right;
实体定义-->参数实体
参数实体被DTD文件自身使用
语法格式:
ENTITY%实体名称“实体内容”>
引用方式:
%实体名称;
举例1:
ENTITY%TAG_NAMES"姓名|EMAIL|电话|地址">
ELEMENT个人信息(%TAG_NAMES;|生日)>
ELEMENT客户信息(%TAG_NAMES;|公司名)>
举例2:
ENTITY%common.attributes”idID#IMPLIEDaccountCDATA#REQUIRED
>
…
ATTLISTpurchaseOrder%common.attributes;>
ATTLISTitem%common.attributes;>
(5)DTD举例
xmlversion="1.0"?
>
DOCTYPECATALOG[
ENTITYAUTHOR"JohnDoe">
ENTITYCOMPANY"JDPowerTools,Inc.">
ENTITYEMAIL"jd@jd-">
ELEMENTCATALOG(PRODUCT+)>
ELEMENTPRODUCT
(SPECIFICATIONS+,OPTIONS?
PRICE+,NOTES?
)>
ATTLISTPRODUCT
NAMECDATA#IMPLIED
CATEGORY(HandTool|Table|Shop-Professional)"HandTool"
PARTNUMCDATA#IMPLIED
PLANT(Pittsburgh|Milwaukee|Chicago)"Chicago"
INVENTORY(InStock|Backordered|Discontinued)"InStock">
ELEMENTSPECIFICATIONS(#PCDATA)>
ATTLISTSPECIFICATIONS
WEIGHTCDATA#IMPLIED
POWERCDATA#IMPLIED>
ELEMENTOPTIONS(#PCDATA)>
ATTLISTOPTIONS
FINISH(Metal|Polished|Matte)"Matte"
ADAPTER(Included|Optional|NotApplicable)"Included"
CASE(HardShell|Soft|NotApplicable)"HardShell">
ELEMENTPRICE(#PCDATA)>
ATTLISTPRICE
MSRPCDATA#IMPLIED
WHOLESALECDATA#IMPLIED
STREETCDATA#IMPLIED
SHIPPINGCDATA#IMPLIED>
ELEMENTNOTES(#PCDATA)>
]>
xml解析概述和DOM&SAX解析原理
(1)xml编程(CRUD)
XML编程(CRUD,createreadupdatedelete)
XML解析技术概述
XML解析方式分为两种:
dom和sax
dom:
(DocumentObjectModel,即文档对象模型)是W3C组织推荐的解析xml的一种方式。
sax:
(SimpleAPIforSML)不是官方标准,但它是XML社区事实上的标准,几乎所有的XML解析器都支持它。
dom和sax解析方法的区别:
dom解析的优点是对文档crud比较方便,缺点是占用内存比较大
sax解析的优点是占用内存少,解析速度快,缺点是只适合做文档的读取,不适合做文档的crud。
调整JVM使用内存大小
JVM默认的内存是64M
在起动JVM时加上-Xmx90M就可以了。
-Xmx90M表示将JVM使用内存调整为90M。
XML解析开发包
Jaxp(sun)、Jdom、dom4j
JAXP
JAXP开发包是J2SE的一部分,它由java.xml、org.w3c.dom、org.xml.sax包及其子包组成
在javax.xml.parsers包中,定义了几个工厂类,程序员调用这些工厂类,可以得到xml文档的DOM或SAX的解析器,从而实现对xml文档的解析。
使用JAXP进行DOM解析
javax.xml.parsers包中的DocumentBuilderFactory用于创建DOM模式的解析器对象,DocumentBuilderFactory是一个抽象工厂类,它不能直接实例化,但该类提供了一个newInstance方法,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回。
DOM方式解析XML文档
DOM解析编程
遍历所有节点、查找某一个节点、删除结点、更新结点、添加节点
使用DOM解析举例(查找):
packagecn.itcast.xml;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importorg.junit.Test;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
//使用dom方式对xml文档进行crud
publicclassDemo3{
@Test
publicvoidread()throwsException{
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdocument=builder.parse("src/book.xml");
NodeListlist=document.getElementsByTagName("书名");
Nodenode=list.item
(1);
Stringcontent=node.getTextContent();
System.out.println(content);
}
/**
*读取book.xml文档中所有标签
*/
@Test
publicvoidread2()throwsException{
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdocument=builder.parse("src/book.xml");
//得到根结点
Nodenode=document.getElementsByTagName("书架").item(0);
list(node);
}
privatevoidlist(Nodenode){
//System.out.println(node.getNodeName());
if(nodeinstanceofElement){//判断是否是标签
System.out.println(node.getNodeName());
}
NodeListlist=node.getChildNodes();
for(inti=0;i Nodechild=list.item(i); list(child); } } /** *读取book.xml文档中一个标签属性的值: <书名name="xxxx">Java就业培训教程书名> */ @Test publicvoidread3()throwsException{ DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=factory.newDocumentBuilder(); Documentdocument=builder.parse("src/book.xml"); //得到根结点 Elementbookname=(Element)document.getElementsByTagName("书名").item(0); Stringvalue=bookname.getAttribute("name"); System.out.println(value); } } book.xml文档 xmlversion="1.0"encoding="UTF-8"? > DOCTYPE书架SYSTEM"book.dtd"> <书架> <书>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- xml 笔记