Xml–Extensible Markup Language(可扩展标记语言)
作用:1,可以用来保存数据
2,可以用来做配置文件
3,数据传输载体
数据结构:倒状树型结构
1,文档声明:
<?xml version="1.0" encoding="UTF-8"?>
2,标签定义规则
标签成对出现:<></>;或者空标签
标签可以自定义
标签不能以数字或者标点符号开始
标签不能以xml开始
标签不能包含空格
3,标签内属性定义规则
定义在标签里面:<>
4,注释:
xml的注释,不允许放置在文档的第一行,必须在文档声明的下面。
5,CDATA(字符数据)区:
格式:<![CDATA[]]>
CDATA,此内容比较少见,一般是服务器返回数据时,才会看见
XML解析
1,DOM:把整个xml全部读到内存中,形成树状结构,整个文档称为document对象,属性对应attribute对象,所有的元素节点对应element对象,文本称为text对象,这些所有对象称为Node节点。
注意:如果xml文件过大,会造成内存溢出,但是可以对文档进行增删操作
2,SAX——simple API for xml(基于事件驱动):读取一行,解析一行。
注意:不会造成内存溢出,但是不能进行增删,只能进行查询
针对这两种解析方式的API有:jaxp sun公司提供
jdom
dom4j 使用比较广泛
Dom4j的基本用法:
1,创建SAXReader对象
SAXReader sr=new SAXReader();
2,指定解析xml文件或路径
Document doc=sr.read(new File(“src/xml/X_stus.xml”));
3,获取根元素rootElement
Element rootElement = doc.getRootElement();
4,根据根元素获取子元素或者子孙元素
List elements = rootElement.elements();
示例:
try {
//创建SAXReader对象
SAXReader sr=new SAXReader();
//指定解析的xml源文件
Document doc=sr.read(new File("src/xml/X_stus.xml"));
//获取根元素
Element rootElement = doc.getRootElement();
// 获取根元素下的子元素集合
List<Element> elements = rootElement.elements();
for(Element element:elements) {
String name=element.element("name").getText();
String age=element.element("age").getText();
String address=element.element("address").getText();
System.out.println("name="+name+"---age="+age+"---address="+address);
}
}catch(Exception e) {
e.printStackTrace();
}
xml的约束:
1,DTD规则约束——dtd文件
DTD规则:
<!ELEMENT stus (stu)>
<!ELEMENT stu (name , age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ATTLIST stu id CDATA #IMPLIED>
2,Schema规则约束——xsd文件
由于Schema也是一个xml文件,所欲会引入网络约束
Schema规则:
xmlns : xml namespace : 名称空间 / 命名空间
targetNamespace : 目标名称空间 。 下面定义的那些元素都与这个名称空间绑定上。
elementFormDefault : 元素的格式化情况。
<element name="teachers">
<complexType>
<sequence maxOccurs="unbounded">
<element name="teacher">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
程序架构:
1,C/S(client/server):
采用此架构的实例:QQ,WECHAT,LOL
优点:
有一部分代码写在客户端,用户体验较好
缺点:
服务器更新,客户端吧也要更新,占用资源较大
2, B/S(browser/server):
采用此架构的实例:网页游戏,WebQQ,Web微博
优点:
客户端只要有浏览器就可以使用,占用资源少,不用更新
缺点:
用户体验不佳
安装包内目录介绍:
1,bin :用于存放jar文件、bat文件等
2,conf :配置文件
3,lib :程序运行所需的jar文件
4,logs :用于存放运行日志
5,temp :临时文件
6,webapps:发布到服务器上的项目,存放于此文件中
7,work :由jsp编译成的class文件,存放于此文件中