XML
1. XML (eXtensible Markup Language
可扩展标记语言) 源标记语言
描述的是结构和语义,而不是格式化。用于网络数据传递。
2. Documentt Type Definition (DTD 文档类型定义)
a) XML中每个元素都是成对出现的(有开始,有结束)
<student id=”110”></students>
相同的属性只能出现一次
b) XML中的元素嵌套关系呀哦保持正确性,即先开始的标记要先结束,后开始的标记要后结束。
3. 每一个XML文档都有且只有一个根元素(Root Element),所谓根元素,就是唯一一个包含了其他所有元素的元素。
4. XML描述的是文档的内容与语义,而不是文档怎么表示。
5. XML声明语句
<?xml version=”1.0” encoding=”UTF-8” standalone=”yes”?>
开始位置要顶格写
?前后是不能有空格的。
<?xml-style-sheet type=”text/css”href=”hello.css”?> XML处理指令
6. 通过样式,我们可以实现XML内容与展现形式的分离。
XML的注释:<!-- -->
注释不允许嵌套,.不能放在标记中间
7. XML内置了五种实体;< < 小于
> > 大于
& &
" “
' ‘
自定义实体 如:Entity.css
<?xmlversion="1.0"?>
<!DOCTYPEcompany[
<!ENTITYshengsiyaun "圣思园------">
<!ENTITY address "北京上地">
]>
<company>
<name>&shengsiyaun;</name>
<address>&address;</address>
</company>
8. 格式正规(well formed)的XML文档。符合XML语法要求的XML文档就是格式正规的XML文档
Altava XMLspy 非常实用的工具
DTD
1. DTD(验证XML的有效性、合法性)
有效的(valid)XML文档,首先XML文档是个格式正规的的XML文档,然后又需要满足DTD的要求,这样的XML文档称为有效的XML文档
2. #PCDATA (Parsed Character Data),可解析的字符数据。
3. 关于普通实体与参数实体
A) 普通实体是在dtd中定义,xml中使用,使用的时候格式为:&address;
B) 参数实体是在dtd中定义,dtd中使用,定义的时候使用%,使用的时候也需要使用%,%address;
C)外部普通实体定义的时候要加 SYSTEM
格式:<!ENTITY address SYSTEM “http://www.shensiyuan.com/xml.xml”>表示使用网址中的内容来替换掉address,而不是使用网址本身字符串来替换掉address。
D)外部参数实体
<!ENTITY %address SYSTEM ”http://www,shenyiayuan.com/xml/xml”>使用的时候:%address;
4. DTD中元素、属性、元素之间的包含关系。
Schema
1.
2. 所有的schema文档,其根元素必须为schema
3. SimpleType与complexType的比较
A) SimpleType类型的元素没有子元素,也没有属性。
B) 当需要定义的元素包含子元素或者属性时,必须要使用ComplexType。
4. SimpleContent,用于ComplexType元素上,用于限定该Complex的内容类型,表示该Complex没有子元素,同时该ComplexType需要有属性,否则它就成为SimpleType了。
5. 通过DOCTYPE可以明确指定文档的根元素,因为DOCTYPE后面跟的元素就是文档的根元素;
通过Schema是没法明确指定目标XML文档的根元素。XMLspy是通过推断那个根元素包含了其他元素来选择包含元素最多的那个元素作为文档的根元素。但我们可以明确指定文档的根元素而不必按照XMLspy的生成来做。
简单工厂模式,又叫静态工厂方法(Static Factory Method)。
工厂类(Creator)
抽象产品(Product)
具体产品(ConcreteProduct)
DOM
DOM documentObject Model(文档对象模型) 解析XML文档,基于随机访问的,全部XML属性结构全部在内存中,随时可以访问。
1. 对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范。
2. 要严格区分XML树中的根结点与根元素结点:
根结点(Document)代表的XML文档本身,是我们解析XML文档的入口,
而根元素结点则表示XML文档的根元素,它对应与XML文档的ROOT。
3. DOM 的四个基本接口:Document Node NodeList NamedNodeMap
4. JAXP (Java API for XML Parsing)用于XML解析的Java API。
5. DocumentBuliderFactory与DocumentBuilder之间的关系:代码
SAX
SAX (Simple API for XML) 面向XML的简单APIs. 与DOM相比,SAX是按顺序解析的,错过了就不能在解析了。 使用的是观察者模式(类似于GUI中的事件)。
1. DOM与SAX:
使用DOM解析XML时,首先将XML文档加载到内存当中,然后可以通过随机的方式访问内存中的DON树,
SAX是基于事件而且是顺序执行的,一一旦经过了某个元素,我们没有办法去访问它了,SAX不必事先将XML加载到内存中。因此,它占据内存要比DOM小,对于大型的XML文档来说,通常它会使用SAX而不是DOM进行解析。
2. DOM与SAX的解析步骤:
DOM 第一:解析工厂 DocumentBuilderFactory
第二:解析器DocumentBuilder
第三: Document
SAX 第一.解析工厂: SAXParserFactory
第二;解析器: SAXParser
第三:开始解析。parse
jDOM
jDOM 框架(解决DOM与SAX解析XML文档的问题)
1. jDom 方法链编程风格(method chain style)
基于调用的方法返回对象本身,可以继续在使用此对象。
2. 对于JDOM 的Format类的getRawFormat方法,通常用于XML数据的网络传输,应为这种格式会去掉所有不必要的空白,因此能够减少网络传输的数据量。