【问题标题】:which is the best way for fetching value from XML : JAXB or DOM?从 XML 获取值的最佳方式是:JAXB 还是 DOM?
【发布时间】:2017-10-06 09:44:27
【问题描述】:

哪一种是读取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();

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

【问题讨论】:

  • 您是否需要使用 JAXB 或 DOM,或者 SAX、StAX 和 Jackson XmlMapper 也是一种选择?
  • 你的 google foo 会告诉你正确的答案。但是 .. 如果您的 xml 很小(认为 500 MB)就位(DOM),否则转到流式传输(SAX,StaX)
  • @toongeorges 作为一个新用户,我目前只期待这两个选项,我需要选择其中一个。
  • DOM 将文档加载到您的程序内存中,因此您可以访问所有节点,我认为构建 JAXB 类更有效。

标签: java xml dom xpath jaxb


【解决方案1】:

要问的第一个问题:您的 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,但它不提供验证。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多