【问题标题】:Processing XML in Java [duplicate]在 Java 中处理 XML [重复]
【发布时间】:2011-09-14 00:37:12
【问题描述】:

在 java 中处理复杂的 xml 文件的最佳方法是什么?

类似这样的:

<company>
<owner>
   <ownername></ownername>
   <ownerage></ownerage>
</owner>

<cars>
   <car>
      <carname></carname>
      <engines></engine>
       <user>
          <name></name>
          <age></age>
          <address></address> 
      </user>
   </car>
</cars>
</company>

提取汽车或用户的最佳方法是什么?

【问题讨论】:

  • 如果您得到答案,请接受对您帮助最大的答案,以便其他人学习。

标签: java xml


【解决方案1】:

如果您正在使用 JAXB,那么首先从一些示例数据生成模式会很方便。

另一种方法是使用效率更高但工作量更大的 XStream。

【讨论】:

    【解决方案2】:

    取决于复杂程度。 JAXB 将元素和属性映射到 Java 类和属性。如果 XML 真的很复杂,那会变得很麻烦,因为您最终会得到数千个类,但如果 XML 相对简单,那就非常简洁了。对于许多任务而言,将数据加载到 JDOM 或 XOM 等树模型中,然后使用 XPath 进行查询是最简单的方法。 (在我看来,避免使用 DOM 本身,它有太多的遗产。)

    【讨论】:

    • WRT JAXB,从 XML 模式开始,在 XML 模式中每个复杂类型大约会生成一个 Java 类。从 Java 类开始,您可以使用 @XmlElementWrapper 等机制减少类的数量。
    【解决方案3】:

    查看jaxb。我相信它现在是官方的 java xml 序列化库。假设您的 xml 有一个 xsd,jaxb 将根据该模式生成所需的 java 类。从那里您可以相对轻松地在 xml 和 java 对象之间进行来回转换。

    要记住的一件事是我总是忘记的术语编组和解组

    java objects -> xml  = marshalling
    xml -> java objects = unmarshalling
    

    【讨论】:

    【解决方案4】:

    如果允许您使用其他 JVM 语言,则 Groovy 对 XML 的支持非常好。 http://groovy.codehaus.org/Reading+XML+using+Groovy's+XmlSlurper

    否则,这篇文章对整个shebang的介绍还不错:http://java.sun.com/developer/technicalArticles/xml/JavaTechandXML/

    【讨论】:

      【解决方案5】:

      Jaxb 是一种非常好的解析 XML 的方法。使用起来相当简单。

      您还可以使用XPath 在 XML 中导航。

      【讨论】:

        【解决方案6】:

        uhmm 我的建议是你需要在网络上进行一些搜索,查看库和示例来完成你的疑问。可以从dom4jjdom 等等开始。所以你的问题取决于你如何使用图书馆

        【讨论】:

          猜你喜欢
          • 2011-02-15
          • 1970-01-01
          • 1970-01-01
          • 2015-07-27
          • 2013-04-24
          • 1970-01-01
          • 2012-09-10
          • 1970-01-01
          • 2018-12-05
          相关资源
          最近更新 更多