当前位置: 代码迷 >> 综合 >> java高级之XML解析
  详细解决方案

java高级之XML解析

热度:40   发布时间:2024-01-25 18:11:52.0

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