您的位置:首页 > 编程语言 > Java开发

java之SAX解析XML

2013-01-05 12:18 260 查看
SAX采用事件处理方式解析XML文件。利用SAX解析XML文件。涉及到两部分:解析器和事件处理。

解析器可以属于JAXP的API创建,创建SAX解析器后,就可以指定SAX解析器去解析某个XML文档了。

解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理的一个方法,解析器在调用事件的处理方法时,会把当前解析的XML内容当做方法的参数传给事件处理器。

事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松的得到SAX解析器解析的到的数据,从而决定如何对数据进行处理。

// 创建解析工厂

SAXParserFactory factory = SAXParserFactory.newInstance();

// 得到解析器

SAXParser parser = factory.newSAXParser();

// 得到读取器

XMLReader reader = parser.getXMLReader();

// 设置内容处理器

reader.setContentHandler(new ListHandler());

// 读取XML文档

reader.parse("src/2.xml");

class ListHandler implements ContentHandler{

@Override

public void startElement(String uri, String localName, String qName,

Attributes atts) throws SAXException {

// 得到开始节点的名称

System.out.println("<"+qName+">");

// 判断节点是否是有属性

for(int i = 0;atts != null && i<atts.getLength();i++){

String attName = atts.getQName(i);

String attValue = atts.getValue(i);

System.out.println(attName+"=="+attValue);

}

}

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

System.out.println(new String(ch,start,length));

}

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

// 得到结束节点的名称

System.out.println("</"+qName+">");

}

@Override

public void endDocument() throws SAXException {

// TODO Auto-generated method stub

}

@Override

public void endPrefixMapping(String prefix) throws SAXException {

// TODO Auto-generated method stub

}

@Override

public void ignorableWhitespace(char[] ch, int start, int length)

throws SAXException {

// TODO Auto-generated method stub

}

@Override

public void processingInstruction(String target, String data)

throws SAXException {

// TODO Auto-generated method stub

}

@Override

public void setDocumentLocator(Locator locator) {

// TODO Auto-generated method stub

}

@Override

public void skippedEntity(String name) throws SAXException {

// TODO Auto-generated method stub

}

@Override

public void startDocument() throws SAXException {

// TODO Auto-generated method stub

}

@Override

public void startPrefixMapping(String prefix, String uri)

throws SAXException {

// TODO Auto-generated method stub

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: