Анализ XML-данных для пользовательских объектов, SAX или DOM

Я хочу создать простую функцию следующим образом:

vector <User> convertXMLDataToUserList (string xmlData) { …. }

Предположим, что xmlData выглядит следующим образом:

<users>
    <user>
        <firstname>ABC</firstname>
        <lastname>DEF</lastname>
        <!-- …… other attributes -->
    </user>
    <user>
        <firstname>ABC</firstname>
        <lastname>DEF</lastname>
        <!-- …… other attributes -->
    </user>
    <!-- …… More users -->
</users>

Мне нужно разобрать эти xmlData в коллекцию объектов User. Я хочу использовать библиотеку QtXML, чтобы справиться с этим. Какой подход к синтаксическому анализу XML лучше с этим справиться, DOM или SAX, и почему?

Конечно, содержимое данных xml не будет ограничено пользовательскими атрибутами, как упоминалось выше, но может содержать и другие различные элементы. Любые ссылки на примеры/учебники по анализу данных xml для пользовательских объектов будут действительно полезны (с использованием библиотеки QtXML).


person all_by_grace    schedule 14.11.2011    source источник


Ответы (1)


прочитайте это сначала и выберите то, что вы хотите использовать соответственно

Синтаксический анализ XML Вторник, 6 ноября 2012 г. · Опубликовано в android project, dom parsing, dom parsing code, parsing, response parsing, sax parsing, sax parsing code, source code, web service code, web service parsing, xml, xml parsing, xmlpull разбор

JAXP:

JAXP означает Java API для обработки xml. Это спецификация от w3c. JAXP — это API от SUN.

используя JAXP API, мы можем обрабатывать XML-документ двумя способами. DOM: сохраняет весь XML-документ в памяти перед обработкой. Занимает больше памяти. Он проходит в любом направлении. Древовидная структура данных

Шаги для работы с DOM:

  1. Создать документBuilderFactory

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

  2. Создать DocumentBuilder

    Построитель DocumentBuilder=фабрика. новыйСтроительДокументов();

    1. get input stream ClassLoader cls=DomReader.class.getClassLoader(); InputStream is=cls.getResourceAsStream("xml file"); 4. parse xml file and get Document object by calling parse method on DocumentBuilder object. Document document=builder.parse(is); 5. Traverse dom tree using document object.SAX: Simple xml parsing. It parses node by node Traversing is from top to bottom Low memory usage Back navigation is not possible with sax.

    // реализация необходимых обработчиков открытый класс SaxParse extends DefaultHandler{ } // новый экземпляр saxParserFactory SAXParserFactory factory=SAXParserFactory.newInstance(); //НОВЫЙ ЭКЗЕМПЛЯР SAX PARSER SAXParser saxparser=factory.newSAXParser(); //Анализ XML-документа SAXParser.parse(новый файл(файл для анализа), новый SAXXMLParserImpl());

person srinivas Nidadavolu    schedule 09.11.2012
comment
пожалуйста, приложите немного больше усилий к форматированию своего ответа, это частично нечитаемо - person kleopatra; 09.11.2012