0
我傳遞一個XML文件和處理程序的SAXParser的,但我得到這個錯誤: 無法解析文件和處理程序中的SAXParser
的解析方法的屬性被定義爲( File,DefaultHandler)完全匹配,所以我不確定哪裏出錯。以下是完整的方法:
public String readXML (File readFile) throws Exception {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxFactory.newSAXParser();
final String outputString = "";
DefaultHandler handler = new DefaultHandler() {
boolean bArtist = false;
boolean bAlbumName = false;
boolean bYear = false;
boolean bGenre = false;
public void startElement(String uri, String localName, String qName, Attributes attr)
throws SAXException {
if (qName.equalsIgnoreCase("ARTIST")) { bArtist = true; }
if (qName.equalsIgnoreCase("ALBUMNAME")) { bAlbumName = true; }
if (qName.equalsIgnoreCase("YEAR")) { bYear = true; }
if (qName.equalsIgnoreCase("GENRE")) { bGenre = true; }
}
public void characters(char ch[], int start, int length) {
if (bArtist) {
outputString.concat("Artist: " + new String(ch,start,length) + "\n");
}
if(bAlbumName) {
outputString.concat("Album: " + new String(ch,start,length) + "\n");
}
if(bYear) {
outputString.concat("Year: " + new String(ch,start,length) + "\n");
}
if(bGenre) {
outputString.concat("Genre: " + new String(ch,start,length) + "\n");
}
outputString.concat("\n");
}
};
saxParser.parse(readFile,handler);
return outputString;
}
爲什麼定義它而不是內聯它會更好? – admrply
只是一個更好的做法。作爲內部類持有對包含類的引用,可能會發生內存泄漏。 – Zielu
我會如何將它改爲類而不是內聯?是否只是創建一個以'private Handler()extends DefaultHandler {...}'開頭的新子類的情況? – admrply