1.XML认识 (Extensible Markup Language) 可扩展标记语言
GML:通用标记语言 解决数据传输的格式问题
SGML 标准的通用标记语言
HTML 超文本标记语言
XML:可扩展标记语言
HTML5
2.XML数据的标准格式
1.所有的XML数据都必须要先声明,必须在第一行
<?xml version='1.0' encoding='UTF-8'?>
2.每一个XML数据都有且只有一对根标签
<a></a>
3.开始标签和结束标签必须一致
4.标签可以嵌套,但是不能交叉
5.如果标签中没有文本,则一般定义成单标签
<img />
6.每个标签都可以定义多个属性,同一个标签不能有同名的属性
------------------------------
3.XML解析
对XML数据的处理过程,叫做XML解析
XML的解析方式:
DOM: Document Object Model 文档对象模型
解析思想:
1.解析的时候首先将整个XML数据一次性读入到内存中,构造成一棵树形结构
2.这个树形结构叫做Document对象
3.每一个标签[元素]叫做一个Element对象
4.每一个属性叫做Attr对象
5.每一个文本叫做Text对象
6.所有的Element、Attr、Text、Document都叫做一个结点[Node]对象
Element、Attr、Text、Document都是Node的子类
7.在解析的时候可以对整棵树进行增删改查的随机操作
4.Java中解析XML的API
JAXP
DocumentBuilderFactory DOM解析器工厂对象
DocumentBuilder DOM解析器对象
Document对象
Element对象
Attr对象
Text对象
Node对象
NodeList 结点列表
NamedNodeMap 属性名值对象列表
TransformerFactory
Transformer
DOMSource
StreamResult
5.标准xml文档
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>b</servlet-name>
<servlet-class method="z">com.newer.demo6.UserControll</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>b</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
6.用dom4j解析xml文档
1.先下载dom4j解析包
2.将dom4j包导入工程目录下
3.开始解析
// 解析xml文档
Document doc=new SAXReader().read("src/web.xml");
// 获取根节点
Element root=doc.getRootElement();
// System.out.println(root);
// ,找出所有servlet-mapping
Iterator<Element> it=root.elementIterator("servlet-mapping");
String name="";
while(it.hasNext()) {
// 获取serverlet-mapping
Element el=it.next();
// 获取子节点url-pattern
String url=el.elementText("url-pattern");
if(patt.equals(url)) {
name=el.elementText("servlet-name");
}
// System.out.println(name+".........");
}
// 获得servlet
Iterator <Element>its= root.elementIterator("servlet");
String classname=" ";
String methodValue="";
while(its.hasNext()) {
Element el=its.next();
// 获得servlet-name
String sname=el.elementText("servlet-name");
if(sname.equals(name)) {
// 获取servlet-class
classname=el.elementText("servlet-class");
// 获取servlet-class上的方法
methodValue= el.element("servlet-class").attributeValue("method");
}
// System.out.println(classname);
}