2010-05-06 23 views
1

解析器(java)会推荐用于解析GPX数据吗?我寻找一个非常直观的使用,并不需要太多的RAM(似乎DOM需要太多,不是吗?)。我不知道如何解析xml,所以现在是我学习这个的时候了;-)推荐用于java中的XML解析器(绝对初学者到xml)

我的文档不是很大,并且总是被读取两次(DOM的一个点),但我想保留很少的东西尽可能在RAM中。

你会在这种情况下做什么?你会选择哪一个,为什么?

+0

在内存中加载的一切是没有必要的一样消耗大量的内存,你可能想看看VTD-XML,SAX,STAX等 – 2010-05-06 17:32:33

回答

3

除非您有特殊原因使用第三方库进行XML解析,否则我只使用标准Java API。请参阅包装javax.xml.parsers。假设你有一个文件的XML,你可以解析它变成一个org.w3c.dom.Document(Java的标准API也部分)是这样的:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(new File(filename)); 

因为你的文件都没有那么大,使用DOM将是最简单,最明显的选择。

您可以使用Document对象和相关对象(请参阅org.w3c.dom包中的类)的方法来获取数据或使用XPath(请参阅包javax.xml.xpath)。

Quotidian提到的JAXB自Java 6以来也是标准API,但是使用标准DOM API可能需要更多的设置工作。

+0

谢谢,我会试试这:) – poeschlorn 2010-05-07 06:56:38

0

根据你想用XML做什么,JAXB可能是一种可能性。这个想法是将xml转换为POJO,而不用解析器(直接)搞乱。 (尽管如果需要的话,仍然可能会弄乱解析器。)另外,我发现由于JAXB在javax根包中,它通常会在标准方面更好地发挥作用。

+0

如果使用的程序,因为它应该使用的XML文件将最多编辑一次(如果接收到的数据无效)发生。在使用程序的过程中,它被读取2或3次... – poeschlorn 2010-05-06 14:26:10

+0

如果有数据无效的机会,我肯定会使用JAXB。有一个相当强大的验证/适配器框架,它在编组/解组步骤中实施。 – Quotidian 2010-05-06 14:51:01

0

XOM是非常容易使用,如果你想使用像DOM,JDOM或DOM4J的东西我认为你应该检查出XOM。它是由一个JDOM开发人员创建的,他试图让api更加用户友好。由于它的构建是平易近人的,并具有良好的在线文档,因此我建议将它作为初学者的良好起点。

0

我阿帕奇沼气池的大风扇,因为它可以让你定义转换规则而直接进入Java对象。我认为JaxB做了类似的事情。