JAXP
xml的解析(将用到JAVA代码)重点内容
简介
xml为标记下语言,JS使用dom解析标记型文档,根据html的层级结构,在内存中分配一个树型结构,把html中的标签、属性、对象都封装成对象,例如:document对象、element对象、属性对象、文本对象、Node节点对象
xml的解析方式有两种:dom和sax
上图是dom的解析过程,该方式好处是很方便实现数据的增删改操作,但是如果文件过大,容易造成内存溢出。至于sax解析采用事件驱动,边读边解析,从上至下一行一行解析,解析到某一对象,将对象名称返回,不会造成内存溢出,查询操作方便,但不能实现增删改操作
总结:
-dom方式解析:根据xml的层级结构在内存中分配一个树状结构,把xml标签,属性和文本都封装成对象
-使用dom弊端:如果文件过大,容易造成溢出
-sax方式解析:采用事件驱动,边读边解析,从上至下一行一行解析,解析到某一对象,将对象名称返回
-使用sax弊端:不能实现增删改操作
解析器
不同的公司和组织提供了针对dom和sax方式的解析器,通过api方式提供,sun公司提供了针对dom和sax的解析器jaxp,dom4j组织提供的解析器就叫dom4j,同样还有jdom组织的解析器jdom
JAXP的API
jaxp解析器在jdk的javax.xml.parsers包里面,包里四个类主要针对dom和sax解析使用,针对dom有DocumentBuilder(解析器类)和DocumentBuilderFactory(解析器工厂)两个类,而sax有SAXParser和SAXParserFactory
jaxp使用
xml文件内容如下:
1 | <?xml version="1.0" encoding="utf-8"?> |
查询操作
1 | public void selectAll() throws Exception{ |
增加操作
1 | public void add() throws Exception(){ |
修改操作
1 | public void fix() throws Exception(){ |
删除操作
1 | public void delete() throws Exception(){ |
遍历节点(把所有元素名称打印出来)
1 | public void listElement() throws Exception(){ |
JAXP实现sax操作
由于sax不能执行增删改操作,所以以下是实现它的查询操作
1 | class MyDefault1 extends DefaultHandler{//以下三个方法自动执行 |
1 | public static void main (String[] args){ |