XML学习(2)
XML(eXtensive Markup Language)可扩展性标记语言
1.标记:
为了处理的目的,在数据中加入附加的信息,称这种信息为标记。
2.标记语言:
运用一系列约定好的语言来进行标记,以实现对电子文档的语义,结构,格式的定义
3.历史:
GML(通用标记语言)-SGML(标准通用标记语言)-HTML(超文本标记语言)-XML(可扩展标记语言)
4.特点:
1>数据内容与显示相分离
HTML CSS
XML CSS/XSL
2>可扩展性
3>验证机制
DTD:用于约束和规范XML文档
XML Schema:用于约束和规范XML文档
4>跨平台,跨语种
5>面向对象的特性
5.应用:
1)数据交换
2)电子商务(基石)
3)数据库支持
4)配置文件
6.XML命名规则
Java命名规则 XML命名规则
1)以字母、_、$开始 1)以字母、_开头
2)后面可以跟字母数字、_、$ 2)下面可以跟字母、数字、-、.、_
3)大小写敏感 3)大小写敏感
4)不能使用保留字、关键字 4)不能以保留字、关键字命名
5)没有长度限制 5)没有长度限制
注意:<1>见名知意
<2>驼峰命名法
<3>多个单词,用_隔开
7.语法
1)第一行必须写xml处理指令:<? ?>
1>版本号 version=“1.0”
2>编码格式 encoding=“utf-8/gb2312/gbk”
3>文件独立 standalone=“yes/no”
2)有且只有一个根元素
3)元素的规则
1>开始标签、结束标签匹配出现
2>标签中可以包含属性
3>可以出现空元素 <=>
元素中内容:
a)子元素
<briup>
<name></name>
</briup>
b)文本内容
<briup>Test</briup>
c)空
<briup></briup> <briup />
注意:空格、制表符、换行等都不是空
d)混合内容
<briup>
Test
<name></name>
</briup>
4>不能交叉嵌套
如:
<a><b><c></a></b></c> //error
<a><b><c></c></b></a>
8.属性规则
<1>key=value配对出现
<2>属性只能出现在开始标签,而且一个开始标签中可以出现多个属性,但是同一开始标签中属性不能重名
<3>属性必须要有值,而且值必须用单引号或者双引号引起来
9.注释:
<!--注释内容-->
10.有效的一定良构,良构不一定有效
11.相关符号
>:> <:< ':&apos "":" &:&
12.解析器
1>验证型解析器:检查XML良构性和有效性
2>非验证型解析:检查XML良构性
13.基于事件的解析器SAX:
1>对文档边读边解析
2>一次性顺序读取,不能随机读取
3>读后忘前
4>对内容是只读
14.基于内存的解析器DOM
1>整个文档读入内存,形成驻留在内容中的树形结构,然后解析
2>反复随机读取
3>对XML文档进行增删改查
15.dom4j解析开发包
1)项目中导入dom4j的包
2)使用相关API进行编程
public class Dom4jTest {
@Test
public void demo1() throws Exception{
//1.获取Document对象
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/com/briup/dtd/web.xml"));
//2.获取根元素
Element rootElement = document.getRootElement();
//3.获取version属性值
String version = rootElement.attributeValue("version");
System.out.println("version:" + version);
//4.获取所有子元素
List<Element> allChildElement = rootElement.elements();
//5.遍历子元素,<servlet>、<servlet-mapping>
for(Element element:allChildElement){
//6.处理<servlet>
String name = element.getName();
//System.out.println(name);
if(name.equals("servlet")){
//7.处理<servlet-name>
Element servletNameElement = element.element("servlet-name");
String servletName = servletNameElement.getText();
System.out.print(servletName+":");
//8.处理<servlet-class>
Element servletClassElement = element.element("servlet-class");
String servletClass = servletClassElement.getText();
System.out.println(servletClass);
}
}
}
}