java高级之XML解析

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);
			}
			

 

发布了52 篇原创文章 · 获赞 38 · 访问量 2502

猜你喜欢

转载自blog.csdn.net/weixin_44364444/article/details/104021280