В моем приложении, я разбор XML-файлы -Тестирования Для нуля возвращаемого значения
Document doc = XMLfunctions.XMLfromString(xml);
с помощью следующей функции
public final static Document XMLfromString(String xml){
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (ParserConfigurationException e) {
System.out.println("XML parse error: " + e.getMessage());
return null;
} catch (SAXException e) {
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
} catch (IOException e) {
System.out.println("I/O exeption: " + e.getMessage());
return null;
}
return doc;
}
Если все работает хорошо, чем программа проверяет по количеству результатов , Моя проблема возникает, когда я сталкиваюсь с плохо сформированным XML-файлом. Например, когда в файле WordPress есть тег внутри. Что происходит, когда мое приложение падает, и когда я смотрю на журнал, то программа поймала исключение
} catch (SAXException e) {
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
что хорошо. Теперь то, что я хочу сделать, это проверить значение null, а затем вызвать финиш(), чтобы вернуться в меню, вместо того чтобы столкнуться с принудительным закрытием.
Я использовал
if (null==doc){
Toast.makeText(this, "Sorry The XML File " + target +" is Misformed", Toast.LENGTH_SHORT).show();
finish();
}
и
if (doc==null){
Toast.makeText(this, "Sorry The XML File " + target +" is Misformed", Toast.LENGTH_SHORT).show();
finish();
}
безрезультатно. Каким будет лучший способ справиться с такими ситуациями?
Все еще ищете Я попытался это
if(XMLfunctions.XMLfromString(xml)==null){
Toast.makeText(this, "Badly Formed File", Toast.LENGTH_LONG).show();
finish();
}
Те же проблемы - строка кода после вызова
int numResults = XMLfunctions.numResults(doc);
Сам код функции
public static int numResults(Document doc){
int res = -1;
Node results = doc.getDocumentElement();
try{
res = Integer.valueOf(results.getAttributes().getNamedItem("count").getNodeValue());
}catch(Exception e){
res = -1;
}
return res;
}
Сообщение начального исключения возвращаются в сообщении, которое возвращается для функции getXML является
03-27 12: 46: 26,917: I/System.out (10311): Wrong структура XML-файл: Предположительное имя> (позиция: START_TAG @ 29: 27 в [email protected])
в этот момент он начинает бросать фатальные исключения
Что происходит? Появляется ли «Тост»? –
Я думаю, было бы легче ответить на ваш вопрос, если бы вы предоставили немного больше кода вокруг/после этой строки 'Document doc = XMLfunctions.XMLfromString (xml);'. Я думаю, что когда-нибудь после вашего 'if (doc == null)' check есть что-то, что пытается вызвать метод на 'doc'. – Peter
Нет, сила приложения закрывается – Hank