我有一个XML格式的数据InputStream。没有架构;任何有效的XML都可以提供给我的应用程序。我想做一些事情,比如计算节点,计算不同级别的属性频率等等。
我希望能够将XML解组为我可以在Java中使用的东西。数据量相对较小(100MB),所以我并不担心将所有数据一次性加载到内存中。我读到的关于Jaxb的一切都告诉我,我需要生成数据直接映射到的java类。但我不知道数据会是什么样子;我所知道的只是它是XML。
当我可以获得某种嵌套的地图结构,然后自己“遍历”XML文档时,是否存在“原始”解组功能?
答案 0 :(得分:2)
Avoid using non-standard methods,例如JDOM。正如评论中已经说明的那样,您无法解组XML,因为您不知道其中的内容。大致上,XML元素转换为类成员,因此如果您事先不知道可能的元素(标记)名称,则不可能使用JAXB注释定义一个可以从XML转换回来的类。
在您计算节点和属性的情况下,我将使用SAX处理。您可以编写一个简单的SAX处理程序来计算它们(甚至为每个元素/属性名称创建一个具有不同计数器的Hashmap,我不知道您的确切需求。)
“原始”树结构正是一个DOM树(处理XML的其他标准方式)。
答案 1 :(得分:0)