【问题标题】:Parsing XML data to user defined objects, SAX or DOM将 XML 数据解析为用户定义的对象、SAX 或 DOM
【发布时间】:2011-11-14 18:49:34
【问题描述】:

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

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 库)。

【问题讨论】:

    标签: xml dom sax qtxml


    【解决方案1】:

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

    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

      DocumentBuilder 构建器=工厂。 newDocumentBuilder();

      1. 获取输入流 ClassLoader cls=DomReader.class.getClassLoader(); InputStream is=cls.getResourceAsStream("xml文件"); 4.解析xml文件,调用parse方法获取Document对象 在 DocumentBuilder 对象上。 文档 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());

    【讨论】:

    • 请在格式化您的答案时多花点功夫,这部分内容不可读
    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2020-01-17
    • 2010-09-16
    • 2011-11-01
    • 2013-05-12
    • 2015-10-08
    • 1970-01-01
    相关资源
    最近更新 更多