我有方法
public String parseRootElement(InputStream xmlStream) throws SAXException {
String name;
try {
DefaultHandler handler;
handler = new DefaultHandler() {
@Override
public void startElement(String uri,String localName,String qName,Attributes attributes){
name=qName;
}
};
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse(xmlStream, handler);
return name;
} catch (ParserConfigurationException | IOException ex) {
throw new IllegalStateException("ParserConfigurationException", ex);
}
}
如何从 public void startElement()获取 qName ? 由于
, name = qName 无效在内部类中访问局部变量输入;需要是 宣布最终
有很多类似的问题,但我仍然是愚蠢的。
答案 0 :(得分:2)
将String name;
更改为final String[] name = new String[1];
,将name=qName;
更改为name[0]=qName;
,将return name;
更改为return name[0];
。
创建一个数组,其中存储结果并从中检索结果。通过将结果存储在数组中,我们可以创建" name"变量final,因此编译器很高兴。