用Java处理XML

用Java处理XML,java,xml,Java,Xml,用java处理复杂xml文件的最佳方法是什么 大概是这样的: <company> <owner> <ownername></ownername> <ownerage></ownerage> </owner> <cars> <car> <carname></carname> <engines></engin

用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>


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

嗯,我的建议是,您需要在web上进行一次轻松的搜索,查看库和示例以完成您的疑问。可以从很多开始。所以你的问题取决于你是如何使用图书馆的。我相信它现在是正式的JavaXML序列化库。如果xml有xsd,jaxb将根据该模式生成所需的java类。从那里,您可以相对轻松地在xml和java对象之间来回转换

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

java objects -> xml  = marshalling
xml -> java objects = unmarshalling
是解析XML的一种非常好的方法。它使用起来相当简单


您还可以使用来浏览XML。

如果允许您使用其他JVM语言,Groovy对XML的支持非常出色。”s+XmlSlurper


除此之外,本文还对整个shebang做了一个体面的介绍:

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

如果要使用JAXB,首先从一些示例数据生成一个模式是很方便的


另一种方法是使用XStream,它效率更高,但工作量也更多。

+1-JAXB(JSR-222)是对象到XML映射的Java标准。有几种实现:Metro(JavaSE6中包含的RI)、EclipseLink MOXy(我是技术负责人)、ApacheJAXME等:我没有xsd模式文件,但有dtd文件。这行吗?是的,但这是实验性的,您不需要XML模式,您可以从现有的域模型开始,应用注释来定制到XML()的映射。这里是将JAXB与DTD一起使用的另一个示例:WRT JAXB,从XML模式开始,XML模式中每个复杂类型大约生成一个Java类。从Java类开始,您可以使用
@xmlementwrapper
等机制减少类的数量。如果您得到了答案,请接受对您帮助最大的答案,以便其他人可以学习。