【发布时间】:2014-05-18 05:46:44
【问题描述】:
我正在使用 JDK7 附带的 SAX 解析器。我正在尝试获取 DOCTYPE 声明,但DefaultHandler 中的任何方法似乎都没有被解雇。我错过了什么?
import java.io.StringReader;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class Problem {
public static void main(String[] args) throws Exception {
String xml = "<!DOCTYPE HTML><html><head></head><body></body></html>";
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
InputSource in = new InputSource(new StringReader(xml));
saxParser.parse(in, new DefaultHandler() {
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("Element: " + qName);
}
});;
}
}
这会产生:
Element: html
Element: head
Element: body
我想要它产生:
DocType: HTML
Element: html
Element: head
Element: body
如何获取 DocType?
更新:看起来有一个 DefaultHandler2 类要扩展。我可以用它作为替代品吗?
【问题讨论】:
标签: java xml-parsing sax