将XML数据解析为用户定义的对象,SAX或DOM

时间:2011-11-14 18:49:34

标签: xml dom sax qtxml

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

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

1 个答案:

答案 0 :(得分:2)

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

XML解析  2012年11月6日,星期二·发表于android项目,dom解析,dom解析代码,解析,响应解析,sax解析,sax解析代码,源代码,Web服务代码,Web服务解析,xml,xml解析,xmlpull解析< / p>

JAXP:

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

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

使用DOM的步骤:

  1. 创建documentBuilderFactory

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

  2. 创建DocumentBuilder

    DocumentBuilder builder = factory。 newDocumentBuilder();

    1. 获取输入流ClassLoader cls = DomReader.class.getClassLoader(); InputStream是= cls.getResourceAsStream(“xml file”); 4.解析xml文件并通过调用parse方法获取Document对象 在DocumentBuilder对象上。 Document document = builder.parse(is); 5.使用文档对象遍历dom树.SAX: 简单的xml解析。 它逐节点地解析 遍历从上到下 内存使用率低 使用sax无法返回导航。
    2. //实现必需的处理程序   public class SaxParse扩展了DefaultHandler {} // saxParserFactory的新实例SAXParserFactory factory = SAXParserFactory.newInstance();  // SAX PARSER的新实例SAXParser saxparser = factory.newSAXParser(); //解析xml文档  SAXParser.parse(新文件(要解析的文件),新SAXXMLParserImpl());