如何打印SAX解析器的输出

时间:2014-03-12 17:11:53

标签: java xml parsing

我有以下代码解析xml文件:

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
DefaultHandler dh=new DefaultHandler();
parser.parse("newfile.xml",dh);

我被困在这里。在SAX中没有任何方法类似于DOM中的document.getElementByTagName,它允许我打印所有节点及其值

1 个答案:

答案 0 :(得分:0)

SAX解析器提供了一种基于XML文档的深度优先遍历来接收事件(即startElementcharactersendElement等)的机制。与DOM不同,没有一个可以被反思的对象模型,如果你不依赖于它永远消失的事件的数据。如果要打印SAX解析器的输出,则需要将此逻辑放在ContentHandler的实现中。

注意:

DefaultHandler本身并没有做任何事情。它只是ContentHandler的一个空实现,你可以扩展它,这样你只需要覆盖你感兴趣的事件方法。