私はAPIに合ったxsdファイルを提供するサードパーティ製のインターフェースを持っています。そのマッピングのいくつかは、私は私のBooleanAdapterため@XmlJavaTypeAdapterクラスを指定するには、バインディングファイルを使用したいませんが、今のところ何の喜びと思い、かなりのJava、バインディングファイル経由で@XmlJavaTypeAdapterクラスを指定しますか?
:-(0 & 1いつものようにブール値ではありません。
バインディングファイル:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns="http://java.sun.com/xml/ns/jaxws"
jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.0">
<jaxb:bindings schemaLocation="GetUserDetailsResponse.xsd" node="/xs:schema" >
<jaxb:globalBindings underscoreBinding="asWordSeparator" >
<jaxb:serializable uid="1" />
<jaxb:javaType name="java.lang.Boolean" xmlType="xs:boolean"
printMethod="mumble.bindings.BooleanAdapter.marshall"
parseMethod="mumble.bindings.BooleanAdapter.unmarshall" />
</jaxb:globalBindings>
</jaxb:bindings>
</jaxb:bindings>
そして、私はPOMから関連するビットをMavenを使用していますので、:
<strict>false</strict>
<extension>true</extension>
<verbose>true</verbose>
<enableWrapperStyle>false</enableWrapperStyle>
<enableAsyncMapping>false</enableAsyncMapping>
私はenableWrapperSを切り替えました
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class Adapter1
extends XmlAdapter<String, Boolean>{
public Boolean unmarshal(String value) {
return (mumble.bindings.BooleanAdapter.unmarshall(value));
}
public String marshal(Boolean value) {
return (mumble.bindings.BooleanAdapter.marshall(value));
}
}
が、私は生成されたラッパーを取り除くために使用し、BooleanAdapterを使用することができ、いくつかのバインディングは魔法をファイルですとtyleと変更なし
私は何を終わらアップが間違った型の生成アダプタです直接?
次5月のヘルプ:http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html –
いいえ、私はすでにそれを見てきました、それは私が望むものではありません。私はおそらく、もし私がそれを変換するint <-->ブール値ではなく、文字列<-->ブール値を強制することができますアダプター1と一緒に暮らすことができますが、不要な余分な層のアダプターは最終的に私を苛立たせるだろう。ありがとう。 –
これを参照してください:http://adventuresintechology.blogspot.ca/2012/04/binding-custom-xmljavatypeadapter-to.html。私はあなたがこの記事の助けを借りてここに求めているものを正確に実装することができました。 –