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

先读这段文字,然后选择你想使用的内容

XML解析发布于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 builder =工厂。

    newDocumentBuilder ();
    1. 获取输入流ClassLoader cls=DomReader.class.getClassLoader();InputStream是= cls。getResourceAsStream("xml文件");4. 解析xml文件,并通过调用parse方法获取文档对象在DocumentBuilder对象。文档文件= builder.parse(是);5. 使用文档对象遍历dom树。SAX:简单的xml解析。它逐个节点解析遍历是从上到下低内存使用率

//实现所需的处理程序公共类SaxParse扩展DefaultHandler{}//saxParserFactory的新实例saxParserFactory factory= saxParserFactory . newinstance ();//新的SAX解析器实例SAXParser SAXParser =factory.newSAXParser();//解析xml文档SAXParser。解析(new File(要解析的文件),new SAXXMLParserImpl());

最新更新