Sax 解析器缺少开头元素
Sax Parser Missing opening Element
我在使用 java sax 解析器打开 Whosebug 帖子 XML 转储时遇到问题。它识别每个元素的结尾,但似乎跳过了 startElement 方法。我正在使用示例代码:
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
}
public void characters(char ch[], int start, int length) throws SAXException {
}
};
saxParser.parse(filename, handler);
XML 的结构很简单,一行包含许多属性:
<row Id="29621" "postTypeID=1" AcceptedAnswer...>
上面代码的输出很简单:
End Element :row
我已经尝试向 defaultHandler 中的方法添加 @Override 注释,但是如果我尝试覆盖 startElement,它会抛出错误。任何人都可以建议如何更正此问题以及为什么不能覆盖 startElement 吗?
如果您在添加 Override
注释时出错,最可能的解释是您的方法签名与您打算覆盖的方法签名不完全匹配。
来自Java 8 JavaDocs of the SAX DefaultParser:
public void startElement(String uri,
String localName,
String qName,
Attributes attributes)
throws SAXException
这看起来不错,但可能您使用的是其他版本。
我在使用 java sax 解析器打开 Whosebug 帖子 XML 转储时遇到问题。它识别每个元素的结尾,但似乎跳过了 startElement 方法。我正在使用示例代码:
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
}
public void characters(char ch[], int start, int length) throws SAXException {
}
};
saxParser.parse(filename, handler);
XML 的结构很简单,一行包含许多属性:
<row Id="29621" "postTypeID=1" AcceptedAnswer...>
上面代码的输出很简单:
End Element :row
我已经尝试向 defaultHandler 中的方法添加 @Override 注释,但是如果我尝试覆盖 startElement,它会抛出错误。任何人都可以建议如何更正此问题以及为什么不能覆盖 startElement 吗?
如果您在添加 Override
注释时出错,最可能的解释是您的方法签名与您打算覆盖的方法签名不完全匹配。
来自Java 8 JavaDocs of the SAX DefaultParser:
public void startElement(String uri,
String localName,
String qName,
Attributes attributes)
throws SAXException
这看起来不错,但可能您使用的是其他版本。