它需要解析器和事件处理器,其中事件处理器里面的操作需要开发人员实现,注册到解析器中,解析器逐行扫描XML文件会调用事件处理器中的方法。
基于这两种解析思想市面上就有了很多的解析api
sun jaxp既有dom方式也有sax方式,并且这套解析api已经加入到j2se的规范中,意味这不需要导入任何第三方开发包就可以直接使用这种解析方式。但是这种解析方式效率低下,没什么人用。
dom4j 可以使用dom方式高效的解析xml。导入开发包,通常只需要导入核心包就可以了,如果在使用的过程中提示少什么包到lib目录下在导入缺少的包即可。
3、SAX解析使用


SAX解析的步骤:
//1、使用SAXParserFactory创建SAX解析工厂
SAXParserFactory spf = SAXParserFactory.newInstance();
//2、通过SAX解析工厂得到解析器对象
SAXParser sp = spf.newSAXParser();
//3、通过解析器对象得到一个XML的读取器
XMLReader xmlReader = sp.getXMLReader();
//4、设置读取器的事件处理器
xmlReader.setContentHandler(new MyContentHandler());
//5、解析xml文件
xmlReader.parse("book.xml");
已知xml文件book.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书>
<书名>Java编程</书名>
<作者>张三</作者>
<售价>20.00元</售价>
</书>
<书>
<书名>Java设计模式</书名>
<作者>李四</作者>
<售价>30.00元</售价>
</书>
</书架>
SAX实现输出第二本书的书名的功能源码:
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
public class SaxDemo{
public static void main(String[] args) throws Exception {
//1.获取解析器工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//2.通过工厂获取sax解析器
SAXParser parser = factory.newSAXParser();
//3.获取读取器
XMLReader reader = parser.getXMLReader();
//4.注册事件处理器
reader.setContentHandler(new MyContentHandler2() );
//5.解析xml
reader.parse("book.xml");
}
}
//适配器设计模式
class MyContentHandler2 extends DefaultHandler{
private String eleName = null;
private int count = 0;
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
this.eleName = name;
}
public void characters(char[] ch, int start, int length)
throws SAXException {
if("书名".equals(eleName) && ++count==2){
System.out.println(new String(ch,start,length));
}
}
public void endElement(String uri, String localName, String name)
throws SAXException {
eleName = null;
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47696-3.html
那就是具有单身未婚的女青年的身份
所以受理费高