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)
根据业务需求,我希望在上述两者之间使用最快的方式和更好的方式。建议和很少的策略将不胜感激。
要问的第一个问题:您的 XML 是否始终具有相同的结构,并且该结构可以映射到 Java 对象的层次结构上吗?
如果是 -> 使用 JAXB 或 Jackson XmlMapper
如果否(您的 XML 的结构各不相同)-> 您是否需要通过多次读取和可能的一些写入来随机访问 XML 中的数据(之后您将数据转换回 XML)?
2.1. 如果是 -> 使用 DOM(它是为在内存中处理 XML 文档树而设计的,但有更多的开销)
2.2. 如果否(更高效的 XML 解析)-> 您是否需要解析 XML 中的所有信息,还是需要 XML 验证?
2.2.1 如果是 -> 使用 SAX(它包含在 JDK 中并允许验证)
2.2.2 如果否 -> 使用 StAX(它是一个 XML 拉式解析器,允许读取 XML 中的某些值而无需解析完整的 XML,但它不提供验证。)