既然 XMLBeans 已经退役了,用啥来代替它呢?

     2023-02-26     166

关键词:

【中文标题】既然 XMLBeans 已经退役了,用啥来代替它呢?【英文标题】:What to use instead of XMLBeans now that it has been retired?既然 XMLBeans 已经退役了,用什么来代替它呢? 【发布时间】:2015-02-27 22:08:12 【问题描述】:

我正在开始一个拥有第三方 XSD 的新项目。我的 Java 应用程序需要生成和读取符合此 XSD 的 XML 消息。过去我为此使用过Apache XMLBeans。看起来 XMLBeans 已经退役了。

现在 XMLBeans 已经退役了,有什么好的替代品呢?我在其他项目中使用过XStream,但我不记得 XStream 能够从 XSD 生成 Java 类,所以我认为对于这个用例来说,它不是 XMLBeans 的好选择。我在 XSD 中定义了数百种类型,并且真的不希望必须创建数百个 Java 类来手动在 Java 中表示它们。

换句话说,使用XStream example,我在XSD 中定义了Person 类型(和其他99 个)。使用 XMLBeans 我可以生成 Java 类来表示这些对象,但使用 XStream 我需要手动或使用其他工具创建 Java 类(例如Person)。在这种情况下我应该使用什么工具?

【问题讨论】:

如果您使用的是axis2,请务必查看他们在ADBJiBXXMLBeans(现已停用)here 中建议的选项。 为什么说 XMLBeans “退休”了?你知道任何官方声明吗? 如果您访问 xml beans 站点,顶部会显示一个横幅,表明该项目已退役:xmlbeans.apache.org 是的!本周开始!根据我得到的信息:attic.apache.org/projects/xmlbeans.html XMLBeans 已退役,由 Apache POI PMC 管理。 xmlbeans.apache.org 【参考方案1】:

你看过 JAXB 吗?我没有对其中任何一个做过任何事情,但是在谷歌上搜索“XMLBeans 的替代品”会带来很多对这个包的引用。这是一篇比较它们的文章...

http://blog.bdoughan.com/2012/01/how-does-jaxb-compare-to-xmlbeans.html

【讨论】:

看起来(到目前为止)JAXB 将提供我们所需要的。我能够从 xsd 生成 Java 类(生成了 573 个 Java 类)。当我生成 XMLBeans 类时,出现了一个“已定义属性值”错误。我现在能够解决这个问题(我猜我需要为永久修复编写一个 jaxb 绑定文件)。感谢史蒂夫的帮助,非常感谢。 唯一的?对我来说,JAXB 的问题是“解组器/编组器”混乱...... :-\ XMLBeans 非常简单和透明。另外,我不知道如何实现“xml 数据库”(xmlbeans 创建方法来将 xml 元素作为列表或数组进行操作) 我们遇到的问题是线程安全与性能的问题。对于非常大的 xml,创建上下文对象很慢。 marshaller 和 unmarshaller 不是线程安全的。更多:jaxb.java.net/guide/Performance_and_thread_safety.html 和这里:***.com/questions/7400422/… 最近链接到提到的performance and thread safety。回购位于github.com/javaee/jaxb-v2【参考方案2】:

XMLBeans 已未退休

Apache POI 项目已停用 XMLBeans 代码库,并将其作为子项目进行维护。到目前为止,XMLBeans 代码库保存在 Apache Attic 中,以前的 Apache 项目是为了公共利益而保存在那里的。

截至 2020 年 8 月的最新版本是:

3.1.0(2019 年 3 月 26 日)

话虽如此,我不确定我是否会推荐使用它,基于它的退役历史。其他解决方案(例如 JAXB)可能更受青睐,因为它可能会在未来得到更好的维护。

【讨论】:

BaseJQueryEventObject、JQueryEventObject 等已弃用。我们用啥来代替它?

】BaseJQueryEventObject、JQueryEventObject等已弃用。我们用啥来代替它?【英文标题】:BaseJQueryEventObject,JQueryEventObject,etcaredeprecated.Whatdowereplaceitwith?BaseJQueryEventObject、JQueryEventObject等已弃用。我们用什么来代替它?【发布时间】:2017-12... 查看详情

在我的 Qt 应用程序中,我可以用啥来代替 sleep 和 usleep?

】在我的Qt应用程序中,我可以用啥来代替sleep和usleep?【英文标题】:whatcanIusetoreplacesleepandusleepinmyQtapp?在我的Qt应用程序中,我可以用什么来代替sleep和usleep?【发布时间】:2010-12-2908:10:24【问题描述】:我将现有代码的一部... 查看详情

为啥要用dbus,如果不用dbus要用啥来代替?

目前dbus生态系统构建得还是比较广泛的,已经被kernel吸收,gtk和qt也封装出high-level的框架。dbus是low-level的消息机制,可以基于dbus定制开发出自己的eventsystem.dbus的性能和具体的技术架构还没有弄清楚(想着也是epoll/poll/select的react... 查看详情

我应该用啥来构建我的 Angular 2 项目?

...ar2项目?【发布时间】:2017-05-1121:20:57【问题描述】:我已经构建了一个Angular2网络应用程序,它在我的计算机上运行良好。但是我去为生产而构建,并且angular-cli构建了一个“HelloWorld”应用程序,而不是使用我的文件来构建我... 查看详情

用啥来替换python中的接口/协议

】用啥来替换python中的接口/协议【英文标题】:Whattouseinreplacementofaninterface/protocolinpython用什么来替换python中的接口/协议【发布时间】:2015-05-1509:01:54【问题描述】:我正在制作一个国际象棋游戏,并想制作一个标准的棋子接口... 查看详情

我应该使用啥来代替 clutter_score_new?

...】:我一直在关注Clutter上的thistutorial,您可以想象,它已经过时了,我的GCC发出了各种各样的弃用警告。由于我不希望它们被扔掉(由于某种原因不推荐使用), 查看详情

你用啥来单元测试C代码? [复制]

】你用啥来单元测试C代码?[复制]【英文标题】:WhatdoyouusetounittestCcode?[duplicate]你用什么来单元测试C代码?[复制]【发布时间】:2010-10-0408:48:40【问题描述】:我是一名专业的网络开发人员,因此我习惯于使用非常高级的脚本语... 查看详情

在 CSS3 中使用啥来代替 CONTAINS()

...到3.6.18,它似乎找不到任何包含“contains()”的定位器我已经阅读了很多论坛。这是一个已知问题,但我没有找到任何解决方案。那么现 查看详情

arch在图形界面下用啥来控制wifi连接

参考技术Astartx,前提是你装了图形界面,arch默认是不装的图形界面有GNOME,KDE,xfce,LXDE,MATE等执行命令sudopacman-S你要的桌面 查看详情

我可以用啥来替换嵌套的异步回调?

】我可以用啥来替换嵌套的异步回调?【英文标题】:WhatcanIusetoreplacenestedasynccallbacks?我可以用什么来替换嵌套的异步回调?【发布时间】:2012-12-1811:10:25【问题描述】:假设我想发送一封电子邮件然后更新数据库,这两个操作... 查看详情

我应该用啥来替换 WinAPI Beep() 函数?

】我应该用啥来替换WinAPIBeep()函数?【英文标题】:WhatshouldIusetoreplacetheWinAPIBeep()function?我应该用什么来替换WinAPIBeep()函数?【发布时间】:2010-06-1510:50:46【问题描述】:我有一个VisualC++/CLI应用程序,它使用哔声来表示结果的好... 查看详情

你用啥来对你的 Web UI 进行单元测试? [关闭]

】你用啥来对你的WebUI进行单元测试?[关闭]【英文标题】:WhatdoyouusetoUnit-TestyourWebUI?[closed]你用什么来对你的WebUI进行单元测试?[关闭]【发布时间】:2010-09-0515:59:12【问题描述】:我目前工作的公司正在使用Selenium对我们的用户... 查看详情

GUITexture 已弃用,那么我应该使用啥来代替它?

】GUITexture已弃用,那么我应该使用啥来代替它?【英文标题】:GUITextureisdeprecated,sowhatshouldIuseinsteadofit?GUITexture已弃用,那么我应该使用什么来代替它?【发布时间】:2018-11-2701:48:18【问题描述】:我目前遇到了更新C#编码的问... 查看详情

如果我不能使用 WebRTC,我现在可以用啥来直播视频

】如果我不能使用WebRTC,我现在可以用啥来直播视频【英文标题】:IfIcan\'tuseWebRTC,whatcanIuserightnowforlivestreamingvideo如果我不能使用WebRTC,我现在可以用什么来直播视频【发布时间】:2014-02-1301:06:10【问题描述】:我正在node.js中开... 查看详情

我应该用啥来比较 DBNull ?使用 DBNull.Value 或 ToString().IsNullOrEmpty()

】我应该用啥来比较DBNull?使用DBNull.Value或ToString().IsNullOrEmpty()【英文标题】:WhatshouldIusetocompareDBNull?UsingDBNull.ValueorToString().IsNullOrEmpty()我应该用什么来比较DBNull?使用DBNull.Value或ToString().IsNullOrEmpty()【发布时间】:2011-03-2413:33:1 查看详情

JwtAccessTokenConverter 和 JwtTokenStore 被贬低了。可以用啥代替?

】JwtAccessTokenConverter和JwtTokenStore被贬低了。可以用啥代替?【英文标题】:JwtAccessTokenConverterandJwtTokenStorewasdrepreciated.Whatcanbeusedinstead?JwtAccessTokenConverter和JwtTokenStore被贬低了。可以用什么代替?【发布时间】:2021-12-1921:29:58【问... 查看详情

在 Swift 3.1 中使用啥来代替 NSEntityDescription

】在Swift3.1中使用啥来代替NSEntityDescription【英文标题】:WhattouseinsteadofNSEntityDescriptioninSwift3.1在Swift3.1中使用什么来代替NSEntityDescription【发布时间】:2017-07-1512:34:07【问题描述】:我对iOS开发真的很陌生。我想在我的应用程序中... 查看详情

Java 9 中不推荐使用 Observer。我们应该使用啥来代替它?

】Java9中不推荐使用Observer。我们应该使用啥来代替它?【英文标题】:ObserverisdeprecatedinJava9.Whatshouldweuseinsteadofit?Java9中不推荐使用Observer。我们应该使用什么来代替它?【发布时间】:2018-03-0422:33:00【问题描述】:Java9出来了,O... 查看详情