#java #android #xml #parsing #inputstream
#java #Android #xml #синтаксический анализ #входной поток
Вопрос:
Экспериментируя с синтаксическим анализом XML-файлов в приложениях Android, я столкнулся с проблемой / багом. Всякий раз, когда у меня есть XML-файлы только с 1 «слоем» дочерних элементов, он отлично разбирается, но когда у меня есть XML с более чем одним слоем (дочерние элементы дочерних элементов), он внезапно не разбирает его.
Теперь я знаю, что это не имеет никакого отношения к самому моему коду синтаксического анализа, потому что он работает в 100% случаев в обычном приложении Java, но когда я хочу включить его в приложение Android, вам нужно создать InputStream и т.д. Может быть, это как-то связано с этим?
Вот мой код для инициирования синтаксического анализа. Он никогда не проходит мимо dom = builder.parse(input_src) :
dickbutt = true;
categories_list = new ArrayList<Category>();
XML = xml_file;
//instantiate String object sto be used throughout class
object_name = object;
class_type = xml_class;
value_pointer = pointer;
//create an input source for the bytestream
InputStream input_src = activity.getAssets().open(XML);
//get factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//get instance of document builder to build document from xml file
DocumentBuilder builder = factory.newDocumentBuilder();
dom = builder.parse(input_src); //NEVER COMPLETES THIS
dickbutt = false;
parseDocument();
Кажется, я не могу добавить свой logcat, поскольку эмулятор не работает и не может установить USB-драйвер Google.
Комментарии:
1. Перезапустите adb. Вам не нужен USB-драйвер Google.
2. Всякий раз, когда я запускаю ADB, моя командная строка просто выполняет кучу команд, а затем переходит к закрытию
3. Решение, которое я нашел, — открыть перспективу DDMS и выбрать устройство и запущенный процесс в окне устройства. После этого LogCat возвращается к жизни.
4. Какая-либо ошибка logcat? если нет, можете ли вы попробовать поместить несколько строк журнала, чтобы найти, где он прекращает синтаксический анализ?
5. @iFrey он останавливается на dom = builder.parse(input_src); и dickbutt никогда не становится false
Ответ №1:
Я понял это. XML-файл был слишком большим для устройства Android. В файле было около 60 тысяч залогов, и как только я его урезал, он заработал идеально