这是从XML获取价值的最佳方式:JAXB还是DOM?

时间:2017-05-08 11:43:49

标签: java xml dom xpath jaxb

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

1)JAXB: 通过使用jaxb注释对我的类进行注释,我们使用Marshalling& amp;来获取java对象中的xml。对象的解组。

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();

根据业务需求,我期望在上述两种方式之间使用最快的方式和更好的方法。建议和一些策略将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

  1. 如果是 - >要么使用JAXB,要么使用Jackson XmlMapper

  2. 如果否(您的XML结构不同) - >您是否需要随机访问XML中的数据,包括许多读取和可能的一些写入(之后您将数据转换回XML)?

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

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

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

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