Динамический анализ XML в Android? - PullRequest
0 голосов
/ 01 февраля 2011

Есть ли способ парсинга XML-файла без знания тегов, присутствующих в XML-файле?

XML-файл предоставляется в качестве входных данных, и его необходимо проанализировать. Поскольку мы не знаем присутствующих в нем тегов, мне было сложно анализировать с использованием DOM Parser или SAX-анализатора.

Есть ли способ получить это ??

Спасибо, Шива Кумар

Ответы [ 3 ]

5 голосов
/ 01 февраля 2011

Мне неясно, в чем проблема.Парсеры Java DOM и SAX не требуют, чтобы теги и атрибуты элемента были известны заранее.Он проанализирует любой правильно сформированный XML.Я не знаком с синтаксическим анализом XML на Android, но в данном руководстве, похоже, здесь не указано, что парсерам необходимо заранее знать теги и атрибуты элементов:

http://www.ibm.com/developerworks/opensource/library/x-android/

ДляНапример, вы можете использовать DOM для анализа XML-документа, чтобы получить дерево DOM.Поскольку вы не знаете имен элементов, вы не можете просто запросить дерево DOM для определенного дочернего или дочернего элемента по имени элемента, но вы можете пройтись по дереву с помощью вызовов, таких как Document.getDocumentElement () и Node.getChildNodes () .Ваш код должен знать, что делать с этим структурированным деревом DOM, которое получается в результате синтаксического анализа XML-документа, но самому анализатору DOM не важно, какие есть конкретные теги и атрибуты элемента.

Аналогично выможет передать XML-документ в синтаксический анализатор SAX, и SAX будет анализировать его нормально.SAX вызовет ваш ContentHandler.startElement () обратный вызов с именем элемента и картой атрибутов в этом элементе.Ваш код должен определить, что делать с элементами и атрибутами, которые SAX-парсер находит при обработке XML-документа, но SAX не волнует, что это за конкретные теги и атрибуты элементов.

Поэтому возникает вопросвплоть до того, что вы хотите, чтобы ваш код делал с результатами анализа XML?Вы пытаетесь идентифицировать это?Вы пытаетесь это красиво напечатать?Вы пытаетесь преобразовать его в другой формат?

1 голос
/ 01 февраля 2011

Для этого вы должны прочитать его в виде простого файла. Скажите, используя BufferedReader. Затем во время чтения каждой строки ищите открывающую и закрывающую вкладку или сопоставление с шаблоном для <> или </>.

и прочитайте остальной символ и заполните его своими собственными буферами. Короче говоря, это все равно что разрабатывать свой собственный сырой парсер.

но это будет работать наверняка. хотя это утомительно. :)

0 голосов
/ 28 декабря 2011

вы можете получить свой XML-файл в папке ресурсов и проанализировать XML-файл следующим образом:

    NodeList root = doc.getElementsByTagName("root");
    NodeList nlQuestions = root.item(0).getChildNodes();

    QuestionObject[] allQuestions = new QuestionObject[nlQuestions.getLength()];

    for (int i = 0; i < nlQuestions.getLength(); i++){
        Node question =  nlQuestions.item(i);
        NodeList childNodes = question.getChildNodes();

        QuestionObject x = new QuestionObject();

        for (int j = 0; j < childNodes.getLength(); j++){
            Node child =  childNodes.item(j);               

            if (child.getNodeName() !="#text"){
                Questions t = Questions.valueOf(child.getNodeName());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...