|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.terasoluna.fw.oxm.mapper.castor.CastorOXMapperImpl
public class CastorOXMapperImpl
Castorを利用したオブジェクト-XML変換クラス。
オブジェクト-XMLの変換を明示的に指定する場合は、Castorマッピング定義ファイルが必要となる。 一つのCastorマッピング定義ファイルでオブジェクト→XML、XML→オブジェクト 相互の変換を行うことができる。 Castorマッピング定義ファイルは変換を行うオブジェクトのクラスと 同じパッケージ、同じ名前、拡張子”.xml”で配置すること。
Castorマッピング定義ファイルを省略した場合は、Castorのデフォルト変換ルールが適用される。
例)XML変換対象のオブジェクトが「sample.SampleBean」クラスの場合、 Castorマッピング定義ファイルはクラスパス上の「sample/SampleBean.xml」 ファイルとなる。
Castorマッピング定義ファイルの記述方法は、 Castorの仕様に準じている。 詳細はTERASOUNAのドキュメントを参照すること。
本クラスでは、一度Castorマッピング定義ファイルを読み込むと 内部でキャッシュされる。 キャッシュを利用しない場合、本クラスの
cache
属性をfalseにすること。
使用例
【変換対象のオブジェクト】
public class SampleDto {
private int userid;
private String username;
private Item[] item;
・・・
(getter、setter)
}
public class Item {
private int id;
private String name;
private int price;
・・・
(getter、setter)
}
【変換対象のXMLデータ】
<sample-dto>
<user-id>15</user-id>
<user-name>user1</user-name>
<item>
<id>100</id>
<name>item1</name>
<price>1000</price>
</item>
<item>
<id>101</id>
<name>item2</name>
<price>2000</price>
</item>
</sample-dto>
【変換対象のオブジェクト】
SampleDto[0].userid[0] = 15
SampleDto[0].name[0] = user1
SampleDto[0].Item[0].id[0] = 100
SampleDto[0].Item[0].name[0] = "item1"
SampleDto[0].Item[0].price[0] = 1000
SampleDto[0].Item[1].id[0] = 101
SampleDto[0].Item[1].name[0] = "item2"
SampleDto[0].Item[1].price[0] = 200
【Castorマッピング定義ファイル】
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<class name="sample.dto.SampleDto">
<map-to xml="sample-dto"/>
<field name="userid" type="int">
<bind-xml name="user-id" node="element"/>
</field>
<field name="username" type="string">
<bind-xml name="user-name" node="element"/>
</field>
<field name="item" type="sample.dto.Item" collection="array">
<bind-xml name="Item" node="element"/>
</field>
</class>
<class name="sample.dto.Item">
<field name="id" type="int">
</field>
<field name="name" type="string">
</field>
<field name="price" type="int">
</field>
</class>
</mapping>
【実装コード(XML→オブジェクト)】
CastorOXMapper oxmapper = new CastorOXMapperImpl();
SampleDto bean = new SampleDto(); // このオブジェクトにXMLデータが格納される
Reader reader = new FileReader("C:/sample/sampleDto.xml"); // 変換するXMLデータ
// XML→オブジェクト変換
oxmapper.unmarshal(reader, bean);
【実装コード(オブジェクト→XML)】
CastorOXMapper oxmapper = new CastorOXMapperImpl();
Writer writer = new OutputStreamWriter(System.out);
// オブジェクト→XML
oxmapper.marshal(bean, writer);
XMLServletRequestDataBinder
フィールドの概要 | |
---|---|
private boolean |
cache
Castorマッピング定義ファイルのキャッシュ設定。 |
static java.lang.String |
CASTOR_MAPPINGFILE_SUFFIX
Castorマッピング定義ファイルのサフィックス。 |
private java.lang.String |
charset
文字セット。 |
protected static java.lang.String |
DEFAULT_CHARSET
デフォルトの文字セット。 |
private java.util.Set<java.lang.Class> |
hasSetMappingSetForMarshaller
Marshallerに設定済みのCastorマッピングのClassの集合。 |
private boolean |
indenting
Marshallerオプション indentingにtrueを設定すると、生成されるxmlがインデントされる。 |
private static org.apache.commons.logging.Log |
log
ログクラス。 |
private java.util.Map<java.lang.Class,org.exolab.castor.mapping.Mapping> |
mappingFileCache
Castorマッピング定義ファイルをキャッシュするMap。 |
static java.lang.String |
NESTED_FOLDER_SEPARATOR
フォルダのセパレータ。 |
static java.lang.String |
NESTED_PACKAGE_SEPARATOR
パッケージのセパレータ。 |
private boolean |
preserveWhitespaceAtMarshal
Marshallerオプション preserveWhitespaceにtrueを設定すると、 生成するドキュメントのルートノードに「xml:space="preserve"」を付与する。 |
private boolean |
preserveWhitespaceAtUnmarshal
Unmarshallerオプション whitespacePreserveにtrueを設定すると、 トップレベルの空白を保持するようになる。 |
private org.exolab.castor.xml.XMLClassDescriptorResolver |
sharedResolverForMarshaller
Marshallerで共有するXMLClassDescriptorResolver。 |
private boolean |
suppressXSIType
Marshallerオプション suppressXSITypeにfalseを設定するとマッピング定義無設定時に 生成するドキュメントに「xmlns:xsi」及び「xsi:type」を付与する |
コンストラクタの概要 | |
---|---|
CastorOXMapperImpl()
|
メソッドの概要 | |
---|---|
protected org.exolab.castor.xml.Marshaller |
createMarshaller(java.lang.Object in,
java.io.Writer writer)
マーシャラーを生成する。 |
protected org.exolab.castor.xml.Unmarshaller |
createUnmarshaller(java.lang.Object out)
アンマーシャラーを生成する。 |
protected org.exolab.castor.mapping.Mapping |
getCastorMapping(java.lang.Class mappingClass)
Castorマッピング定義ファイルを取得する。 |
java.lang.String |
getCharset()
文字セットを取得する。 |
protected java.lang.String |
getMappingFilePath(java.lang.Class mappingClass)
Castorマッピングファイルのパスを取得する。 |
protected java.net.URL |
getUrl(java.lang.Class mappingClass)
URLを取得する。 |
boolean |
isCache()
cacheを取得する。 |
void |
marshal(java.lang.Object in,
java.io.Writer writer)
オブジェクトをXMLに変換し、ストリームに書き込む。 |
void |
setCache(boolean cache)
cacheを設定する。 |
void |
setCharset(java.lang.String charset)
文字セットを設定する。 |
void |
setIndenting(boolean indenting)
Marshallerオプション indentingを設定する trueを設定すると、生成されるxmlがインデントされる。 |
void |
setPreserveWhitespaceAtMarshal(boolean preserveWhitespaceAtMarshal)
Marshallerオプション preserveWhitespaceを設定する。 |
void |
setPreserveWhitespaceAtUnmarshal(boolean preserveWhitespaceAtUnmarshal)
Unmarshallerオプション whitespacePreserveを設定する。 |
void |
setSuppressXSIType(boolean suppressXSIType)
Marshallerオプション suppressXSIType Castorマッピング無設定化時にスキーマバリデータを適用する場合にtrueを設定する。 |
void |
unmarshal(org.w3c.dom.Document doc,
java.lang.Object out)
DOMツリーをオブジェクトに変換する。 |
void |
unmarshal(java.io.InputStream is,
java.lang.String argCharset,
java.lang.Object out)
ストリームからXMLデータを取り出し、オブジェクトに変換する。 |
void |
unmarshal(java.io.Reader reader,
java.lang.Object out)
ストリームからXMLデータを取り出し、オブジェクトに変換する。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
private static org.apache.commons.logging.Log log
protected static final java.lang.String DEFAULT_CHARSET
private java.lang.String charset
private boolean cache
private boolean suppressXSIType
private boolean preserveWhitespaceAtMarshal
private boolean preserveWhitespaceAtUnmarshal
private boolean indenting
public static final java.lang.String NESTED_PACKAGE_SEPARATOR
public static final java.lang.String NESTED_FOLDER_SEPARATOR
public static final java.lang.String CASTOR_MAPPINGFILE_SUFFIX
private java.util.Map<java.lang.Class,org.exolab.castor.mapping.Mapping> mappingFileCache
private org.exolab.castor.xml.XMLClassDescriptorResolver sharedResolverForMarshaller
private java.util.Set<java.lang.Class> hasSetMappingSetForMarshaller
コンストラクタの詳細 |
---|
public CastorOXMapperImpl()
メソッドの詳細 |
---|
public void unmarshal(org.w3c.dom.Document doc, java.lang.Object out)
OXMapper
内の unmarshal
doc
- DOMツリー。out
- XMLから変換されたオブジェクト。public void unmarshal(java.io.Reader reader, java.lang.Object out)
OXMapper
内の unmarshal
reader
- XMLデータ。文字セットが指定されていない場合、 VMのデフォルト文字セットが使用される。out
- XMLから変換されたオブジェクト。public void unmarshal(java.io.InputStream is, java.lang.String argCharset, java.lang.Object out)
引数argCharsetがnullまたは空文字の場合、 InputStreamReaderの文字セットとして属性charset
の値が使用される。
デフォルト設定では、属性charset
の値は"UTF-8"である。
OXMapper
内の unmarshal
is
- XMLデータ。argCharset
- 文字セット。out
- XMLから変換されたオブジェクト。protected org.exolab.castor.xml.Unmarshaller createUnmarshaller(java.lang.Object out)
out
- 出力対象のオブジェクト
public void marshal(java.lang.Object in, java.io.Writer writer)
OXMapper
内の marshal
in
- XMLに変換するオブジェクトwriter
- 変換したXMLを書き込むライターprotected org.exolab.castor.xml.Marshaller createMarshaller(java.lang.Object in, java.io.Writer writer)
in
- XML変換対象のオブジェクトwriter
- 出力用ライター
protected org.exolab.castor.mapping.Mapping getCastorMapping(java.lang.Class mappingClass)
cache
属性がtrueの場合、読み込んだCastorマッピング定義ファイルを
キャッシュする。falseの場合、キャッシュは行わない。
mappingClass
- マッピング対象のクラス
protected java.net.URL getUrl(java.lang.Class mappingClass)
mappingClass
- マッピング対象のクラス
protected java.lang.String getMappingFilePath(java.lang.Class mappingClass)
mappingClass
- マッピングするクラス。
public boolean isCache()
public void setCache(boolean cache)
cache
- cache属性に設定する値public java.lang.String getCharset()
public void setCharset(java.lang.String charset)
charset
- 文字セット。public void setSuppressXSIType(boolean suppressXSIType)
<resultReserveParam> <reserveDetailList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:sample.ReserveDetail"> </reserveDetailList> </resultReserveParam>
<resultReserveParam> <reserveDetailList> </reserveDetailList> </resultReserveParam>
suppressXSIType
- 設定する suppressXSITypepublic void setPreserveWhitespaceAtUnmarshal(boolean preserveWhitespaceAtUnmarshal)
trueを設定すると、全ての要素について空白を保持 したままアンマーシャルが行われる。
falseの場合でも、「xml:space="preserve"」が指定された 要素については、空白を保持したままアンマーシャルされる。
全電文に対して有効になるため、使用には注意が必要である。 デフォルト値はfalse
。
preserveWhitespaceAtUnmarshal
- 設定する whitespacePreservepublic void setPreserveWhitespaceAtMarshal(boolean preserveWhitespaceAtMarshal)
trueを設定すると生成するドキュメントのルートノードに 「xml:space="preserve"」を付与する。
全電文に対して有効になるため、使用には注意が必要である。 デフォルト値はtrue
。
<resultReserveParam> <reserveDetailList> </reserveDetailList> </resultReserveParam>
<resultReserveParam xml:space="preserve"> <reserveDetailList> </reserveDetailList> </resultReserveParam>
preserveWhitespaceAtMarshal
- 設定するpreserveWhitespacepublic void setIndenting(boolean indenting)
indenting
- 設定する indenting
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |