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

Vai*_*ibs 2 java xml xpath dom jaxb

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

1)JAXB:通过使用 jaxb 注释来注释我的类,我们使用对象的编组和解组在 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();
Run Code Online (Sandbox Code Playgroud)

根据业务需求,我希望在上述两者之间使用最快的方式和更好的方式。建议和很少的策略将不胜感激。

too*_*ges 5

要问的第一个问题:您的 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 拉式解析器,允许读取 XML 中的某些值而无需解析完整的 XML,但它不提供验证。)