替换 xerces xml

问题描述 投票:0回答:1

在我基于 JDK17 构建的应用程序中,我们使用 xerces2 来实现 xml 功能,但您可能知道 Xerces2 的开发已变得停滞不前,最后一次发布是在 2022 年。因此,我想将其从代码库中删除。现在,在 JDK 9 在 java 中引入模块概念之后,它有点锁定我们直接使用基于 JDK xerces 的内部方法,我们必须使用 --add-exports 才能在我们的中使用它。

--add-exports java.xml/com.sun.org.apache.xerces.internal.impl.xs=ALL-UNNAMED

我想知道有什么可能的替代方案可以用于 xml 解析、验证并帮助我们删除 xerces。

这些是我们正在为 xml 进行的一些导入...

import static com.sun.org.apache.xerces.internal.xs.XSConstants.ELEMENT_DECLARATION;
import com.sun.org.apache.xerces.internal.xs.XSAttributeUse;
import com.sun.org.apache.xerces.internal.xs.XSComplexTypeDefinition;
import com.sun.org.apache.xerces.internal.xs.XSConstants;
import com.sun.org.apache.xerces.internal.xs.XSElementDeclaration;
import com.sun.org.apache.xerces.internal.xs.XSModelGroup;
import com.sun.org.apache.xerces.internal.xs.XSObjectList;
import com.sun.org.apache.xerces.internal.xs.XSParticle;
import com.sun.org.apache.xerces.internal.xs.XSTerm;
import com.sun.org.apache.xerces.internal.xs.XSTypeDefinition;

我看过 jakarta.xml 可以作为替代方案,但实际上我没有找到类似的方法可以用我正在使用的方法来替换。

java xml xml-validation xerces
1个回答
0
投票

根本不清楚你想要实现什么目标。 XML 规范已经稳定了四分之一个世纪,那么为什么您不愿意使用同样稳定的 XML 解析器呢?想要更好的东西可能有正当理由,但产品稳定这一事实本身并不能成为转向其他产品的理由。

实际上 Xerces 有两个版本:来自 Apache 的版本和内置于 JDK 中的版本。曾经我曾经推荐 Apache 版本,因为错误修复得更快,但我认为情况不再是这样了。

您显示的导入列表表明您正在使用 JDK 版本的 Xerces,而且您正在使用它的一些专门的 API 来公开模式组件模型:这意味着您关心的是一些模式访问功能,而不是核心 XML 解析和 XSD 验证功能。继续使用它的最简单、最明显的方法是切换到 Xerces 的 Apache 版本。但是您使用的 API 相当专业,这将有助于了解您使用它们的用途 - 您自己似乎并不完全了解这些用途。

© www.soinside.com 2019 - 2024. All rights reserved.