我是C#开发人员,但最近我不得不用Java重写我的应用程序版本。
C#app适用于传输自定义对象的WCF主机/客户端。由于Java不是我的专长,我努力创建一个与我的WCF主机通信的工作Web服务,但我设法做到了。在解析WCF自定义对象的过程中,显然,Java为我完成了大部分工作,创建了所有类和对象。
但是,在我的自定义对象的任何String
属性中,它将其定义为JAXBElement
。此生成的类中的每个其他属性都保存到XML文件,但创建为“JAXB”属性的属性除外。
在网上搜索我发现有几篇文章宣称以下代码会阻止生成这样的属性类型(只保留原始属性类型,在我的例子中为String)
<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文件,虽然我尝试了几个,但似乎都没有。
由于
答案 0 :(得分:1)
将参数添加到生成工具 - xjc 。
<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 ......