XML-файл не работает в приложении Android, когда у XML есть дочерние элементы / слои?

#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 тысяч залогов, и как только я его урезал, он заработал идеально