如何仅从 XML 生成 JAXB 类
Posted
技术标签:
【中文标题】如何仅从 XML 生成 JAXB 类【英文标题】:How to generate JAXB classes from just XML 【发布时间】:2011-06-27 02:21:24 【问题描述】:我需要从不提供架构的 xml 生成类。我知道这几乎没用,但事实是我们有 xml,它是结构化的,我们应该能够从 xml 创建模型。过去我是手动完成的,但是我正在使用的当前 xml 文档非常大,我的时间可能会更好地用于构建可以满足我需要的东西。但是,我猜它已经完成了,我只是找不到它。
任何指针?
【问题讨论】:
【参考方案1】:有许多可用的工具(快速的 google 搜索应该可以找到一些)可以从 XML 生成 XSD,假设几乎所有内容都是字符串类型。您应该能够使用该 XSD 运行 JAXB 来获取类。
这里有一个online tool,可以让你做到这一点。
这是一个屏幕截图:
【讨论】:
@Yauhen,不知道为什么,但是您的链接对我不起作用,但 Bala R 可以-尽管我的 xml 非常复杂 我不明白你为什么发布这个在线工具而不是发布 Java 代码。那不是我要找的…… 由于某种原因,该站点现在似乎无法正常工作,但 Google“xml 模式生成器”显示有几个。这是来自 Liquid:liquid-technologies.com/online-xml-to-xsd-converter【参考方案2】:如果 XML 是由 JAXB 创建的,则可以轻松地将其转换回对象。 oracle 上有一个tutorial,它说明了执行此操作的一种方法。 Spring 框架使用非常方便的 JAXB 提供了类似的功能。
【讨论】:
【参考方案3】:从您的 xml 文件中,您可以创建一个 XML 架构定义 (XSD) 文件。拥有 XSD 后,您将能够生成代码,需要它用于 java、C#、C++ 或以上所有代码。
如果你有 Visual Studio,你可以使用 xsd.exe 来生成 XSD 文件。
参考文献:
www.xmlforasp.net/CodeBank/System_Xml_Schema/BuildSchema/BuildXMLSchema.aspx
msdn.microsoft.com/en-us/library/x6c1kb0s(v=vs.71).aspx
命令语法:xsd file.xml [/outputdir:directory]
所以 “C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\xsd.exe” example.xml 在与 xml 文件。
XSD 到 Java: 参考:
http://www.javaworld.com/javaworld/jw-06-2006/jw-0626-jaxb.html 命令语法:xjc your.xsd -p com.example.package -d src/generatedOutputDirectoryXSD 到 C++: 参考资料:
***.com/questions/445905/xml-schema-to-c-classes www.codesynthesis.com/products/xsd/XSD 到 C#: 参考:
quickstart.developerfusion.co.uk/quickstart/howto/doc/xmlserialization/XSDToCls.aspx 命令语法:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\xsd.exe" -c -l:c# -n:SomeNameSpace example.xsd【讨论】:
Javaworld 链接现已失效..web.archive.org/web/20170724100142/http://www.javaworld.com/… 对于 Java,如果您已下载 JDK,您将在 C:\Program Files\Java\jdk1.8.0_241\bin 等文件夹中拥有 xjc 等命令 - 然后您可以将其添加到路径能够使用该命令。以上是关于如何仅从 XML 生成 JAXB 类的主要内容,如果未能解决你的问题,请参考以下文章