在 .NET 中处理 JAXB @XMLIDRef

Posted

技术标签:

【中文标题】在 .NET 中处理 JAXB @XMLIDRef【英文标题】:Handle JAXB @XMLIDRef in .NET 【发布时间】:2012-05-07 05:16:22 【问题描述】:

我正在使用 jax-ws 编写 Web 服务。 Web 服务的方法之一返回 bean,其中包含对其父级的引用。为了防止循环引用,我在我的 bean 中使用了 JAXB @XMLID 和 @XMLIDRef 注释。

然后我正在为 java 客户端生成代理类,一切正常,id 解析为 Object 属性。但后来我在 Visual Studio for .NET 中生成 Web 服务客户端代理,它将 idrefs 解释为字符串属性,而不是对象。

是否可以通过解析 idrefs 从 wsdl 为 .NET 生成代理类?

【问题讨论】:

.NET 似乎更喜欢 id/ref 属性组合。见***.com/a/1617566/278836。所以 .NET 不喜欢 Java 方式,而 Java 不喜欢 .NET 方式;至少开箱即用(据我所知)。我对此也很感兴趣,因为跨平台引用似乎是一个相当关键的功能。 @Andrew White 感谢您的参考。我坐在这里思考我自己是如何设法避免这种互操作混乱的。我通读了那个链接,这导致了这个链接:blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx。也许问题归结为:所描述的技术是否足以允许 .NET/Java 互操作? 【参考方案1】:

开箱即用的 Microsoft 工具无法为您完成这项工作。您必须要求 Microsoft 更改

wsdl 生成工具。例如:

wsdl.exe:http://msdn.microsoft.com/library/7h3ystb6(VS.80).aspx svcutil.exe: http://msdn.microsoft.com/en-us/library/aa347733.aspx

在最近的一个项目中,我必须解决这些工具的缺点,并使用基本脚本修改生成的代码,以修复未按所需方式生成的内容(在我们的例子中,与 Java 端 wsdl 生成不兼容)

【讨论】:

请说明您是如何得出结论的。

以上是关于在 .NET 中处理 JAXB @XMLIDRef的主要内容,如果未能解决你的问题,请参考以下文章

CXF+JAXB处理复杂数据

如何在一个Jaxb2Marshaller中处理更多的WSDL?

Jaxb处理泛型,转化成xml字符串

.Net 框架服务引用类生成器遵守的 JAXB 顺序

JAXB 可以处理 java.time 对象吗?

有没有办法处理 JAXB 中多个 .xsd 文件中的重复元素定义?