jaxbでは、xsdの文字列をjava.util.UUIDにどのように変換しますか?組み込みのデータ型コンバータはありますか、独自のカスタムコンバータを作成する必要はありますか?xs:stringをjaxbのjava.util.UUIDに変換します。
5
A
答えて
10
を使用すると、Javaクラスで始まり、JAXB注釈を使用する場合、これは行うことが容易にずっとです。ただし、スキーマを使用してこれを行うには、カスタムバインディングファイルを使用する必要があります。次に例を示します。
スキーマ:(example.xsd)
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com"
xmlns="http://www.example.com"
elementFormDefault="qualified">
<xs:simpleType name="uuid-type">
<xs:restriction base="xs:string">
<xs:pattern value=".*"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="example-type">
<xs:all>
<xs:element name="uuid" type="uuid-type"/>
</xs:all>
</xs:complexType>
<xs:element name="example" type="example-type"/>
</xs:schema>
バインディング:(bindings.xjb)は(printMethod
とparseMethod
で簡潔にするために、私はUuidConverter
クラスがデフォルトのパッケージにあったと仮定していることに注意してください。これらは、現実には、完全修飾でなければなりません。だから、パッケージcom.foo.bar
で、値がcom.foo.bar.UuidConverter.parse
とcom.foo.bar.UuidConverter.print
<!-- Modify the schema location to be a path or url -->
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
node="/xs:schema"
schemaLocation="example.xsd">
<!-- Modify this XPATH to suit your needs! -->
<jxb:bindings node="//xs:simpleType[@name='uuid-type']">
<jxb:javaType name=" java.util.UUID"
parseMethod="UuidConverter.parse"
printMethod="UuidConverter.print"/>
</jxb:bindings>
</jxb:bindings>
UuidConverようにする必要がありUuidConverter
場合ter.java:そのは本当によく文書化されていませんので、
import java.util.UUID;
public class UuidConverter {
public static UUID parse(String xmlValue) {
return UUID.fromString(xmlValue);
}
public static String print(UUID value) {
return value.toString();
}
}
悲しいことに、私は良い参考にあなたを指すことはできません。どのようにすべての作品がブログ投稿に広がっているかのビットと部分があります。この作業を初めて行うには数時間かかりました。 :/
0
シンプルコンバータを自分で作成します。
UUID.fromString(String uuid);
http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html
関連する問題
- 1. JAXBを使用した値の変換
- 2. JAXBを使用してJSONをPOJOに変換する
- 3. jaxbオブジェクトをorg.w3c.dom.Elementに変換できますか?
- 4. jaxb(unmarshal)を使用してxmlをjavaオブジェクトに変換
- 5. C#XmlSerializerはxs:attributeをxs:string以外の型で無視します
- 6. XSLTテンプレートを使用して1つのJAXBオブジェクトから別のJAXBオブジェクトに変換する
- 7. はjava.util.UUIDスレッドセーフですか?
- 8. インポート用のjava.util.UUIDは何ですか?
- 9. 変換のパフォーマンスXML> XSL> XMLとXML> JAXB> XML
- 10. CXF/JAXBコードファーストサービス:入力のXMLSchemaTypeを変更します
- 11. 変数をconstに変換します
- 12. JAXB置換グループはマーシャルしますが、正しくアンマーシャリングしません。
- 13. ファイルを変換します.InputstreamをUTF-8に変換します。C#
- 14. JavaFX JAXBでXMLからデータをロードした後で、TableViewのハイパーリンクにテキストを変換する
- 15. JettisonとJAXBはJSONレスポンスのデータ型を自動的に変更します
- 16. JAXBのnillable属性のデフォルト値を変更できますか?
- 17. intに変換する前にnullフィールドをゼロに変換しますか?
- 18. QSetting値をStdStringに変換します
- 19. intをcharに変換しますか?
- 20. は '../../'を 'path/path /'に変換します
- 21. arraylistオブジェクトをbyte []に変換します
- 22. datetimestampをRSSに変換します。pubDate
- 23. LTRをRTLに変換しますか?
- 24. paramをpythonに変換しますか?
- 25. モデルをviewmodelに変換します
- 26. 型 'System.Dynamic.DynamicObjectをSystem.Collections.IEnumerableに変換します。
- 27. DecimalをAsciiに変換しますか?
- 28. SQLiteをHTMLに変換しますか?
- 29. イメージをグレースケールに変換します。アルファ
- 30. PHPをASPに変換しますか?
[Blaise DoughanのXMLアダプタに関する記事](http://blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html)をご覧ください。 –
明らかに既定のコンバーターがなく、自分で作成する必要があります。私がしたことは、以下の回答とほぼ同じでした。私は既存のbindings.xjbを持っていたので、単にそれを変更するのが少し楽になりました。ノードxpathは複数のノードで問題を抱えていましたが、別の話です:)ありがとう。彼の努力のために@mwsltnを選択します。 –