2017-05-08 49 views
0

哪一种是阅读xml的有效方式。我知道的方法有两种:

1)JAXB: 通过注释我的班有JAXB注解,我们得到使用对象的编组&解组在java对象反之亦然XML。这是从XML获取值的最佳方式:JAXB或DOM?

2)DOM: 使用dom解析器解析xml并使用xml中的xpath值可以被访问。 DOM的

例子:

 File fXmlFile = new File("/Users/link1/input.xml"); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 

按照业务需求,我希望用最快的方式与上述两者之间的更好的方法。建议和几个策略将不胜感激。

+0

你需要使用JAXB或DOM,或者是SAX,StAX的和杰克逊XmlMapper也一个选项? – toongeorges

+0

你的谷歌foo会告诉你正确的答案。但是..如果你的xml很小(想象500 MB)就地(DOM)否则去流(SAX,StaX) – SomeDude

+0

@toongeorges作为一个新用户,我目前只期待着这两个选项,需要选择其中之一。 – Vaibs

回答

2

问题第一个问题:您的XML总是具有相同的结构,并且此结构是否可以映射到Java对象的层次结构上?

  1. 如果是 - >要么使用JAXB或杰克逊XmlMapper

  2. 如果否(你的XML的结构而异) - >您是否需要与众多的数据随机存取你的XML阅读和可能一些写入(之后您将数据转换回XML)?

    2.1。如果是 - >使用DOM(它专为XML文档树的内存处理而设计,但具有更多开销)

    2.2。如果否(更高效的XML解析) - >您需要解析XML中的所有信息还是需要XML验证?

    • 2.2.1如果是 - >使用SAX(它包含在JDK,并允许验证)

    • 2.2.2如果否 - >使用的StAX(它是一个XML拉解析器允许读XML进行了一些值,而不必解析完整的XML,但它不提供验证。)

相关问题