Parsing 运行Sax解析器
我不熟悉使用SAX解析器。有人能告诉我如何运行它吗?运行它需要什么(jdk)…我可以拥有一个sax解析器,它可以解析android xml和普通xmlsax解析器是通过创建一个Parsing 运行Sax解析器,parsing,compilation,sax,Parsing,Compilation,Sax,我不熟悉使用SAX解析器。有人能告诉我如何运行它吗?运行它需要什么(jdk)…我可以拥有一个sax解析器,它可以解析android xml和普通xmlsax解析器是通过创建一个ContentHandler对象来实现的,该对象实现了与解析xml文档时发生的事件相对应的某些回调函数。例如,解析器开始解析文档时调用startDocument方法,发现新标记时调用startElement;类似地,当解析器找到标记或文档的结尾或发现无效序列时,将调用endElement、endDocument和error
ContentHandler
对象来实现的,该对象实现了与解析xml文档时发生的事件相对应的某些回调函数。例如,解析器开始解析文档时调用startDocument
方法,发现新标记时调用startElement
;类似地,当解析器找到标记或文档的结尾或发现无效序列时,将调用endElement
、endDocument
和error
演示如何使用SAX解析器。关键是MyHandler
类扩展了DefaultHandler
类(它实现了ContentHandler
接口),并覆盖了每个回调方法的空实现
可以这样想:Java
SAXParser
类知道如何解析XML文档,但当它发现感兴趣的东西时,它依赖于一些处理程序类来知道如何处理它们。DefaultHandler
类是一个帮助器实现,您可以扩展它来关注有趣的事情。如果需要,您可以直接使用ContentHandler(见下文),而不是扩展DefaultHandler。我相信这种级别的SAX解析在Android平台上是可用的
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.XMLReader;
public class Demo {
public static void main(String[] args) throws Exception {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(new MyContentHandler());
xr.parse("input.xml");
}
private static class MyContentHandler implements ContentHandler {
public void setDocumentLocator(Locator locator) {
}
public void startDocument() throws SAXException {
}
public void endDocument() throws SAXException {
}
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
}
public void endPrefixMapping(String prefix) throws SAXException {
}
public void startElement(String uri, String localName, String qName,
System.out.println("START " + qName);
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("END " + qName);
}
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println(new String(ch, start, length));
}
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
}
public void processingInstruction(String target, String data)
throws SAXException {
}
public void skippedEntity(String name) throws SAXException {
}
}
}
谢谢maerics你能告诉我如何解析本地xml文件吗..那么defaulthandler类就不是必需的了