2012-10-31 19 views
1

我是C#開發人員,但最近我不得不用Java重寫我的應用程序的一個版本。JAXB generateElementProperty代碼位置

C#應用程序與傳送自定義對象的WCF主機/客戶端一起工作。由於Java不是我的專業,我努力創建一個與我的WCF主機進行通信的工作Web服務,但我設法做到了。在解析WCF自定義對象的過程中,顯然,Java爲我完成了大部分工作,創建了所有的類和對象。

但是,在我的自定義對象的任何String屬性中,它將其定義爲JAXBElement。除了創建爲「JAXB」屬性的那些外,此生成的類中的其他每個屬性都保存到XML文件中。

搜索我發現了幾個文章,宣佈將下面的代碼將防止此類屬性類型的產生(只留下原來的物業類型,在我的情況字符串)網絡

<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

  • 保存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_w sdl_from_c_sharp.wsdl ...

,或者如果您使用的WSDL2Java:WSDL2Java的-b bindings.xml ...

+0

你是什麼意思「添加參數到生成工具-xjc」?我使用的是NetBeans 7.2,但我沒有找到類似的東西?請記住,java不完全是我的區域。謝謝 – David

+0

選擇新建>其他> XML> JAXB綁定。然後點擊下一步。出現新的JAXB綁定向導。在底部有「使用綁定文件」 – konradkg

+0

只需簡短註釋一個文件名稱:儘管文件的名稱並不重要,但典型的擴展名是'.xjb.'。請參閱http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html#wp148366 – schnatterer