1

我是一名 C# 开发人员,但最近我不得不用 Java 重写我的应用程序版本。

C# 应用程序与传输自定义对象的 WCF 主机/客户端一起使用。由于 Java 不是我的专长,我在创建一个与我的 WCF 主机通信的工作 Web 服务方面有点困难,但我设法做到了。在解析 WCF 自定义对象的过程中,显然,Java 为我完成了大部分工作,创建了所有的类和对象。

但是,在String我的自定义对象的任何属性中,它都将其定义为JAXBElement. 此生成的类中的其他每个属性都保存到 XML 文件中,但创建为“JAXB”属性的属性除外。

在网上搜索我发现了几篇文章,声明以下代码将阻止此类属性类型的生成(仅保留原始属性类型,在我的情况下为字符串)

<jaxb:bindings version="2.0"
        xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <jaxb:bindings schemaLocation="schema-importedby-wcfsvcwsdl"
             node="/xs:schema">
    <jaxb:globalBindings generateElementProperty="false"/>
  </jxb:bindings>

唯一的问题是它没有说明我将这段代码放在哪里。在我的项目中,我有几个 wsdl 和 xml 文件,虽然我尝试了一些,但似乎都没有。

谢谢

4

1 回答 1

1

将参数添加到生成工具 - xjc

  • 保存bindings.xml文件
<jaxb:bindings version="2.0" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <jaxb:bindings node="/xs:schema"> 
        <jaxb:globalBindings generateElementProperty="false"/> 
    </jaxb:bindings> 
</jaxb:bindings>
  • 在控制台/工具中添加参数:

    xjc -verbose -b bindings.xml -wsdl my_wsdl_from_c_sharp.wsdl ...

或者如果您使用 wsdl2java:wsdl2java -b bindings.xml ...

于 2012-10-31T12:08:17.083 回答