我想创建一个简单的函数,如下所示:
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库)。
发布于 2012-11-09 17:33:32
先阅读这篇文章,然后选择你想要使用的东西
xml解析,发布在android项目中,dom解析,dom解析代码,解析,响应解析,sax解析,sax解析代码,源代码,web服务代码,web服务解析,xml,XML解析,xmlpull解析。
JAXP:
JAXP代表Java API for xml processing。它是来自w3c的规范。JAXP是来自SUN的API。
使用JAXP api,我们可以用两种方法处理xml文档。DOM:在处理之前将整个xml文档存储到内存中。它占用更多的内存。它可以在任何方向上遍历。树数据结构
使用DOM的步骤:
DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
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扩展DefaultHandler{ }//新的saxParserFactory SAXParserFactory factory=SAXParserFactory.newInstance()实例;//新的SAX解析器实例SAXParser saxparser=factory.newSAXParser();//解析xml文档SAXParser.parse(新文件(待解析的文件),新的SAXXMLParserImpl());
https://stackoverflow.com/questions/8126545
复制相似问题