将Java Objects
转换为XML
有哪些不同的方法,我知道有一个选项是JAXB
,但我想知道同一个approaches/tools
可用的是什么?
注意: 我没有进一步的要求,因此我无法在问题中添加更多meat
,但此时此刻真的很棒如果我可以了解哪些不同的方法可用于转换Java to XML
?
更新: 不同的建议方法是:
现在,在所有建议的方法中,转换Java Objects to XML
和XML to Java Objects
的 最佳 方法是什么?
答案 0 :(得分:32)
答案 1 :(得分:10)
您始终可以使用javax.xml.bind.Marshaller
和javax.xml.bind.Unmarshaller
接口自行完成。
这并不像听起来那么疯狂。这并不难,而且你可以完全掌控并完成所做的事情。
我愿意承认很多人更喜欢自动化方法。我的产品不会受欢迎。
我过去使用过XStream并喜欢它,但是当我使用它时,我不必担心XML命名空间。我被告知XStream并没有很好地处理它们。
答案 2 :(得分:2)
答案 3 :(得分:1)
我知道这不是你问的问题,但是你考虑过JSON而不是XML吗?我目前正在开发一个大量使用JSON(使用Jackson库)的项目,我对此非常满意。杰克逊的工作方式与JAXB类似 - 它甚至适用于JAXB注释,以防你想要同时使用它们。
XMLBeans也值得一看。
答案 4 :(得分:1)
另一种方法是Simple,它比JAXB,JiBX或其他类似工具更容易使用。您只需注释类,就可以将任何POJO序列化为XML。此外,它可能是目前适用于所有已知Java平台的唯一框架,包括Android,Google App Engine,任何JDK 1.5+。有关详细信息,请查看Tutorial
答案 5 :(得分:0)
还有:
但如果你没有充分的理由不这样做,我建议使用JAXB。
答案 6 :(得分:0)
答案 7 :(得分:0)
Apache Digester是一个选项。这是tutorial。如果JSON格式可以接受,那么您可以使用google-gson。
答案 8 :(得分:0)
Castor允许直接从XSD模式生成Java类(体面实现)(上面的用例#1)。 请确保,在Android 2.1中,不要使用默认的android SAXParser。你会得到命名空间错误。您可以通过在core.properties中将解析器定义为例如Xerces(以及您添加所需的JARS)来实现此目的。在Android 2.2中它可能没问题。请注意,如果使用xerces为unmarsheler创建xmlcontext,它仍然无法工作,因为映射本身将使用android的SAX进行解析。它必须在核心(顶级属性文件)上完成,以便即使映射也由xerces解析。终于 - 性能和你期望的一样慢...... :(祝你好运SM