我有以下代码解析xml文件:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
DefaultHandler dh=new DefaultHandler();
parser.parse("newfile.xml",dh);
我被困在这里。在SAX中没有任何方法类似于DOM中的document.getElementByTagName
,它允许我打印所有节点及其值
答案 0 :(得分:0)
SAX解析器提供了一种基于XML文档的深度优先遍历来接收事件(即startElement
,characters
,endElement
等)的机制。与DOM不同,没有一个可以被反思的对象模型,如果你不依赖于它永远消失的事件的数据。如果要打印SAX解析器的输出,则需要将此逻辑放在ContentHandler
的实现中。
注意:强>
DefaultHandler
本身并没有做任何事情。它只是ContentHandler
的一个空实现,你可以扩展它,这样你只需要覆盖你感兴趣的事件方法。