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
JAXPDocumentBuilderFactory DOM解析器工厂对象DocumentBuilder DOM解析器对象Document对象Element对象Attr对象Text对象Node对象NodeList 结点列表NamedNodeMap 属性名值对象列表TransformerFactoryTransformerDOMSourceStreamResult
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-mappingIterator<Element> it=root.elementIterator("servlet-mapping");String name="";while(it.hasNext()) {
// 获取serverlet-mappingElement el=it.next();
// 获取子节点url-patternString url=el.elementText("url-pattern");if(patt.equals(url)) {name=el.elementText("servlet-name");}
// System.out.println(name+".........");}// 获得servletIterator <Element>its= root.elementIterator("servlet");String classname=" ";String methodValue="";while(its.hasNext()) {Element el=its.next();
// 获得servlet-nameString sname=el.elementText("servlet-name");if(sname.equals(name)) {
// 获取servlet-classclassname=el.elementText("servlet-class");
// 获取servlet-class上的方法methodValue= el.element("servlet-class").attributeValue("method");}
// System.out.println(classname);}