0

我想创建一个简单的函数如下:

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 解析为用户对象的集合。我想使用 QtXML 库来处理这个问题。哪种 XML 解析方法能更好地处理这个问题,DOM 还是 SAX,为什么会这样?

当然xml数据内容不限于上面提到的用户属性,还可以包含其他各种元素。任何关于将 xml 数据解析为用户定义对象的示例/教程链接都会非常有帮助(使用 QtXML 库)。

4

1 回答 1

2

首先阅读此内容并相应地选择您要使用的任何内容

XML解析2012年11月6日星期二·发表在android项目,dom解析,dom解析代码,解析,响应解析,sax解析,sax解析代码,源码,web服务代码,web服务解析,xml,xml解析,xmlpull解析

JAXP:

JAXP 代表用于 xml 处理的 Java API。这是来自 w3c 的规范。JAXP 是来自 SUN 的 API。

使用 JAXP api,我们可以用两种方法处理 xml 文档。DOM:在处理之前将整个 xml 文档存储到内存中。它占用更多的内存。它向任何方向移动。树形数据结构

使用 DOM 的步骤:

  1. 创建 documentBuilderFactory

    DocumentBuilderFactory 工厂= DocumentBuilderFactory.newInstance();

  2. 创建文档构建器

    DocumentBuilder 建设者=工厂。newDocumentBuilder();

    1. 获取输入流 ClassLoader cls=DomReader.class.getClassLoader(); InputStream is=cls.getResourceAsStream("xml文件"); 4. 解析xml文件,通过调用DocumentBuilder对象的parse方法得到Document对象。文档 document=builder.parse(is); 5.使用document object.SAX遍历dom树:简单的xml解析。它逐个节点解析 遍历是从上到下 低内存使用 sax 无法进行后退导航。

    //实现所需的处理程序 public class SaxParse extends DefaultHandler{ } //saxParserFactory 的新实例 SAXParserFactory factory=SAXParserFactory.newInstance(); //SAX 解析器的新实例 SAXParser saxparser=factory.newSAXParser(); //解析xml文档 SAXParser.parse(new File(待解析的文件), new SAXXMLParserImpl());

于 2012-11-09T09:33:32.207 回答