0

我想知道是否有办法强制 JAXB 创建与 XSD 模式相同的名称空间前缀。即,即使我从其中包含 xmlns:cts="http://cts.com" 的模式创建 JAXB 类,在编组类之后,我得到一个带有 xmlns:ns1 前缀的 XML。我知道我可以通过使用 NamespacePrefixMapper 类来覆盖这些,但是当我的 XSD 清楚地定义了默认前缀时,为什么我需要手动执行此操作?我当前的 XML 中有大量前缀,因此在初始 xjc 生成之后手动更改包级声明或类注释也是一个巨大的返工。我正在处理一个带有 10+ XSD 导入和 5000+ 元素以及数十个根元素的基本 XSD。

端点系统超出了我们的控制范围,因此我必须关心在 XML 中使用了哪些前缀,因为它们没有适当的 XML 处理实现。

这有什么捷径吗?感谢所有的投入。

问候, Gökhan

4

1 回答 1

2

最简单的捷径是让 XML 的生产者和消费者使用标准的 XML 处理工具。你说这在你的情况下不起作用。

结果是,为了使您的数据消费者免于学习使用现有的现成 XML 工具,您将不得不付出努力,不仅要生成正确的 XML,还要生成满足额外任意性的正确 XML大多数 XML 软件旨在隐藏抽象级别的特殊约束。如果他们是非常好的客户,那可能是值得的。

具体来说,我要么 (1) 找到一种方法来自动化您想要对 JaxB 生成的类进行的配置更改,或者 (2) 编写一个简单的 SAX 过滤器来规范命名空间前缀,然后通过该过滤器运行数据它出了门。第二种方法的优点是将您的数据消费者的关注点转移到您自己处理的外围,让您更好地专注于您更关心的事情。

于 2013-07-24T16:31:28.123 回答