Итак, я пытаюсь разобрать XML-файл в своем приложении для Android, используя нодэлист и Documentbuilder. Проблема в том, что Documentbuilder.parse() всегда возвращает null и заканчивает тем, что бросает исключение IOException. Я предполагаю, что это имеет какое-то отношение к неправильному пути к файлу.Анализ XML XML, Documentbuilder throws exception
public class EquiScoreActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ProtocolFactory.GetProtocolFactory().LoadProtocol("EquiScore/assets/Protocols/LC1_2008.xml");
}
}
public class ProtocolFactory
{
private static ProtocolFactory m_Instance = new ProtocolFactory();
Document dom;
private ProtocolFactory()
{
}
public static ProtocolFactory GetProtocolFactory()
{
return m_Instance;
}
public Protocol LoadProtocol(String filename)
{
Protocol output = null;
List<JudgementGroup> jGroups;
List<GeneralAssesment> gAssesment;
ParseXmlFile(filename);
ParseDocument();
return output;
}
private void ParseXmlFile(String filename)
{
//get the factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try
{
//Using factory get an instance of document builder
DocumentBuilder db = dbf.newDocumentBuilder();
//parse using builder to get DOM representation of the XML file
dom = db.parse(filename);
}
catch(ParserConfigurationException pce)
{
pce.printStackTrace();
}
catch(SAXException se)
{
se.printStackTrace();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
В принципе мне нужно знать, как получить правильный путь файла или какой-то другой (может быть лучше?) Способ разбора XML. Каждый узел одного типа может иметь различное количество дочерних узлов, поэтому я решил, что этот подход будет хорошим.
IOException является: «MalformedURLException» «Протокол не найден: EquiScore/активы/Протоколы/LC1_2008.xml»
Я пробовал различные вариации имени файла, но, кажется, эту ошибку в любом случае.
Спасибо, что у меня в «Файл не найден», по крайней мере! :) Теперь мне просто нужно выяснить путь к файлу. Он находится в активах/протоколах /, но это, похоже, не работает. – Bentebent
Ну, активы (материал в активах/папке) доступны через API AssetManager - не файл или URL-адреса. – Jens
Хорошо, так какой был бы лучший способ действий? Создайте новую папку, что-то вроде res/XML/Protocols и получите ее оттуда? Редактировать: Ну, я пробую это, но не могу найти его, чтобы найти файлы в любом случае. Должно быть, я не ошибаюсь в отношении файлового пути или всего этого? – Bentebent