クラス XStreamMarshaller

java.lang.ObjectSE
org.springframework.oxm.support.AbstractMarshaller
org.springframework.oxm.xstream.XStreamMarshaller
実装されたすべてのインターフェース:
AwareBeanClassLoaderAwareInitializingBeanMarshallerUnmarshaller

public class XStreamMarshaller extends AbstractMarshaller implements BeanClassLoaderAware, InitializingBean
XStream の Marshaller インターフェースの実装。

デフォルトでは、XStream はそれ以上の構成を必要とせず、クラスパス上のクラスを(アン)マーシャリングできます。そのため、XStreamMarshaller を使用して外部ソース(つまり Web)から XML のマーシャリングを解除することはお勧めしません。これにより、 セキュリティの脆弱性が生じる可能性がありますXStreamMarshaller を使用して外部 XML のマーシャリングを解除する場合は、supportedClasses および converters プロパティを設定するか(おそらく CatchAllConverter を使用)、または customizeXStream(XStream) メソッドをオーバーライドして、サポートするクラスのみを受け入れるようにします。

XStream の API により、OutputStreams への書き込みに使用されるエンコードを設定する必要があります。デフォルトは UTF-8 です。

注意 : XStream は XML 直列化ライブラリであり、データバインディングライブラリではありません。ネームスペースのサポートは制限されています。そのため、Web サービス内での使用には不向きです。

このマーシャラーには、Spring 5.2.17 以降の XStream 1.4.7 以降が必要です。XStream の構築が 4.0 で作り直され、ストリームドライバーとクラスローダーが XStream 自体に渡されることに注意してください。

Spring Framework 6.0 の時点で、デフォルトの HierarchicalStreamDriver は、構成されたエンコーディングNameCoder を使用する DomDriver です。ドライバは setStreamDriver(HierarchicalStreamDriver) で変更できます。

導入:
3.0
作成者:
Peter Meijer, Arjen Poutsma, Juergen Hoeller, Sam Brannen
  • フィールドの詳細

    • DEFAULT_ENCODING

      public static final StringSE DEFAULT_ENCODING
      ストリームアクセスに使用されるデフォルトのエンコーディング: UTF-8。
      関連事項:
  • コンストラクターの詳細

    • XStreamMarshaller

      public XStreamMarshaller()
  • メソッドの詳細

    • setReflectionProvider

      public void setReflectionProvider(com.thoughtworks.xstream.converters.reflection.ReflectionProvider reflectionProvider)
      使用するカスタム XStream ReflectionProvider を設定します。
      導入:
      4.0
    • setStreamDriver

      public void setStreamDriver(com.thoughtworks.xstream.io.HierarchicalStreamDriver streamDriver)
      リーダーとライターに使用する XStream HierarchicalStreamDriver を設定します。

      Spring 4.0 以降、このストリームドライバーは XStream コンストラクターにも渡されるため、ストリーミング関連のネイティブ API メソッド自体によって使用されます。

    • setMapper

      public void setMapper(com.thoughtworks.xstream.mapper.Mapper mapper)
      使用するカスタム XStream Mapper を設定します。
      導入:
      4.0
    • setMapperWrappers

      public void setMapperWrappers(ClassSE<? extends com.thoughtworks.xstream.mapper.MapperWrapper>... mapperWrappers)
      1 つ以上のカスタム XStream MapperWrapper クラスを設定します。これらの各クラスには、型 Mapper または MapperWrapper の単一の引数を持つコンストラクターが必要です。
      導入:
      4.0
    • setConverterLookup

      public void setConverterLookup(com.thoughtworks.xstream.converters.ConverterLookup converterLookup)
      使用するカスタム XStream ConverterLookup を設定します。また、指定されたリファレンスがそれを実装する場合、ConverterRegistry としても使用されます。
      導入:
      4.0
      関連事項:
      • DefaultConverterLookup
    • setConverterRegistry

      public void setConverterRegistry(com.thoughtworks.xstream.converters.ConverterRegistry converterRegistry)
      使用するカスタム XStream ConverterRegistry を設定します。
      導入:
      4.0
      関連事項:
    • setConverters

      public void setConverters(com.thoughtworks.xstream.converters.ConverterMatcher... converters)
      Converters または SingleValueConverters が XStream インスタンスに登録されるように設定します。
      関連事項:
      • Converter
      • SingleValueConverter
    • setTypePermissions

      public void setTypePermissions(com.thoughtworks.xstream.security.TypePermission... typePermissions)
      customizeXStream(com.thoughtworks.xstream.XStream) メソッドをオーバーライドする代わりに、AnyTypePermissionExplicitTypePermission などの XStream 型のアクセス許可を設定します。

      メモ: XStream 1.4.18 では、デフォルトの型権限は、既知のコア JDK 型に制限されています。カスタム型の場合は、明示的な型のアクセス許可を登録する必要があります。

      導入:
      5.2.17
    • setMarshallingStrategy

      public void setMarshallingStrategy(com.thoughtworks.xstream.MarshallingStrategy marshallingStrategy)
      使用するカスタム XStream MarshallingStrategy を設定します。
      導入:
      4.0
    • setMode

      public void setMode(int mode)
      使用する XStream モードを設定します。
      関連事項:
      • XStream.ID_REFERENCES
      • XStream.NO_REFERENCES
    • setAliases

      public void setAliases(MapSE<StringSE,?> aliases)
      クラスにマッピングされた文字列エイリアスで構成されるエイリアス / 型マップを設定します。

      キーはエイリアスです。値は、Class インスタンスまたは String クラス名のいずれかです。

      関連事項:
      • XStream.alias(String, Class)
    • setAliasesByType

      public void setAliasesByType(MapSE<StringSE,?> aliasesByType)
      クラスにマップされたストリングエイリアスで構成されるマップによってエイリアスを設定します

      この型に割り当て可能なクラスはすべて、同じ名前にエイリアスされます。キーはエイリアスです。値は、Class インスタンスまたは String クラス名のいずれかです。

      関連事項:
      • XStream.aliasType(String, Class)
    • setFieldAliases

      public void setFieldAliases(MapSE<StringSE,StringSE> fieldAliases)
      フィールド名で構成されるフィールドエイリアス / 型マップを設定します。
      関連事項:
      • XStream.aliasField(String, Class, String)
    • setUseAttributeForTypes

      public void setUseAttributeForTypes(ClassSE<?>... useAttributeForTypes)
      XML 属性を使用する型を設定します。
      関連事項:
      • XStream.useAttributeFor(Class)
    • setUseAttributeFor

      public void setUseAttributeFor(MapSE<?,?> useAttributeFor)
      XML 属性を使用する型を設定します。指定されたマップには、<String, Class> ペアのいずれかを含めることができます。その場合、XStream.useAttributeFor(String, Class) が呼び出されます。または、マップに <Class, String> または <Class, List<String>> ペアを含めることができます。これにより、XStream.useAttributeFor(Class, String) 呼び出しが発生します。
    • setImplicitCollections

      public void setImplicitCollections(MapSE<ClassSE<?>,StringSE> implicitCollections)
      暗黙の収集フィールドを、コンマ区切りの収集フィールド名にマップされた Class インスタンスで構成されるマップとして指定します。
      関連事項:
      • XStream.addImplicitCollection(Class, String)
    • setOmittedFields

      public void setOmittedFields(MapSE<ClassSE<?>,StringSE> omittedFields)
      コンマ区切りのフィールド名にマップされた Class インスタンスで構成されるマップとして、省略されたフィールドを指定します。
      関連事項:
      • XStream.omitField(Class, String)
    • setAnnotatedClasses

      public void setAnnotatedClasses(ClassSE<?>... annotatedClasses)
      クラスレベルのアノテーションメタデータからエイリアスが読み取られるアノテーション付きクラスを設定します。
      関連事項:
      • XStream.processAnnotations(Class[])
    • setAutodetectAnnotations

      public void setAutodetectAnnotations(boolean autodetectAnnotations)
      XStream の自動検出モードをアクティブにします。

      注意 : 自動検出は、XML ストリームの処理中に XStream インスタンスが構成されていることを意味し、潜在的な同時実行性の問題を引き起こします。

      関連事項:
      • XStream.autodetectAnnotations(boolean)
    • setEncoding

      public void setEncoding(StringSE encoding)
      ストリームアクセスに使用するエンコードを設定します。
      関連事項:
    • getDefaultEncoding

      protected StringSE getDefaultEncoding()
      クラスからコピーされた説明: AbstractMarshaller
      バイトストリームからのマーシャリングまたはアンマーシャリングに使用するデフォルトエンコーディングを決定します。存在しない場合は null を決定します。

      デフォルトの実装は null を返します。

      オーバーライド:
      クラス AbstractMarshallergetDefaultEncoding 
    • setNameCoder

      public void setNameCoder(com.thoughtworks.xstream.io.naming.NameCoder nameCoder)
      使用するカスタム XStream NameCoder を設定します。デフォルトは XmlFriendlyNameCoder です。
      導入:
      4.0.4
    • setSupportedClasses

      public void setSupportedClasses(ClassSE<?>... supportedClasses)
      このマーシャラーがサポートするクラスを設定します。

      このプロパティが空の場合(デフォルト)、すべてのクラスがサポートされます。

      関連事項:
    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoaderSE classLoader)
      インターフェースからコピーされた説明: BeanClassLoaderAware
      Bean class loaderSE を Bean インスタンスに提供するコールバック。

      通常の Bean プロパティの設定、ただし InitializingBean's InitializingBean.afterPropertiesSet() メソッドやカスタム init-method などの初期化コールバックの前に呼び出さます。

      次で指定:
      インターフェース BeanClassLoaderAwaresetBeanClassLoader 
      パラメーター:
      classLoader - 所有クラスローダー
    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • buildXStream

      protected com.thoughtworks.xstream.XStream buildXStream()
      このマーシャラーが使用するネイティブ XStream デリゲートを構築し、constructXStream()configureXStream(com.thoughtworks.xstream.XStream)customizeXStream(com.thoughtworks.xstream.XStream) に委譲します。
    • constructXStream

      protected com.thoughtworks.xstream.XStream constructXStream()
      標準コンストラクターのいずれかを使用するか、カスタムサブクラスを作成して、XStream インスタンスを構築します。
      戻り値:
      XStream インスタンス
    • configureXStream

      protected void configureXStream(com.thoughtworks.xstream.XStream xstream)
      このマーシャラーの Bean プロパティを使用して XStream インスタンスを構成します。
      パラメーター:
      xstream - XStream インスタンス
    • customizeXStream

      protected void customizeXStream(com.thoughtworks.xstream.XStream xstream)
      指定された XStream のカスタマイズを可能にするテンプレート。

      デフォルトの実装は空です。

      パラメーター:
      xstream - XStream インスタンス
    • getXStream

      public final com.thoughtworks.xstream.XStream getXStream()
      このマーシャラーが使用するネイティブ XStream デリゲートを返します。

      注: このメソッドは、Spring 4.0 の時点で最終としてマークされています。マーシャリングのために完全に構成された XStream にアクセスするために使用できますが、構成目的では使用できなくなりました。

      Spring Framework 5.1.16 の時点で、このメソッドによって返される XStream インスタンスの作成はスレッドセーフです。

    • supports

      public boolean supports(ClassSE<?> clazz)
      インターフェースからコピーされた説明: Marshaller
      このマーシャラーが、指定された型のインスタンスをマーシャリングできるかどうかを示します。
      次で指定:
      インターフェース Marshallersupports 
      次で指定:
      インターフェース Unmarshallersupports 
      パラメーター:
      clazz - このマーシャラーがマーシャリングできるかどうか尋ねられているクラス
      戻り値:
      このマーシャラーが実際に提供されたクラスのインスタンスをマーシャリングできる場合は true。それ以外の場合は false 
    • marshalDomNode

      protected void marshalDomNode(ObjectSE graph, NodeSE node) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定されたオブジェクトグラフを DOM Node にマーシャリングする抽象テンプレートメソッド。

      実際には、node は Document ノード、DocumentFragment ノード、Element ノードです。つまり、子を受け入れるノードです。

      次で指定:
      クラス AbstractMarshallermarshalDomNode 
      パラメーター:
      graph - マーシャリングするオブジェクトグラフのルート
      node - 結果ツリーを含む DOM ノード
      例外:
      XmlMappingException - 指定されたオブジェクトを DOM ノードに整列化できない場合
      関連事項:
    • marshalXmlEventWriter

      protected void marshalXmlEventWriter(ObjectSE graph, XMLEventWriterSE eventWriter) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定されたオブジェクトを StAX XMLEventWriter にマーシャリングする抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallermarshalXmlEventWriter 
      パラメーター:
      graph - マーシャリングするオブジェクトグラフのルート
      eventWriter - 書き込む XMLEventWriter 
      例外:
      XmlMappingException - 指定されたオブジェクトを DOM ノードに整列化できない場合
    • marshalXmlStreamWriter

      protected void marshalXmlStreamWriter(ObjectSE graph, XMLStreamWriterSE streamWriter) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定されたオブジェクトを StAX XMLStreamWriter にマーシャリングする抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallermarshalXmlStreamWriter 
      パラメーター:
      graph - マーシャリングするオブジェクトグラフのルート
      streamWriter - 書き込む XMLStreamWriter 
      例外:
      XmlMappingException - 指定されたオブジェクトを DOM ノードに整列化できない場合
    • marshalSaxHandlers

      protected void marshalSaxHandlers(ObjectSE graph, ContentHandlerSE contentHandler, @Nullable LexicalHandlerSE lexicalHandler) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定されたオブジェクトグラフを SAX ContentHandler にマーシャリングする抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallermarshalSaxHandlers 
      パラメーター:
      graph - マーシャリングするオブジェクトグラフのルート
      contentHandler - SAX ContentHandler
      lexicalHandler - SAX2 LexicalHandlernull にすることができます。
      例外:
      XmlMappingException - 指定されたオブジェクトをハンドラーにマーシャリングできない場合
    • marshalOutputStream

      public void marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream) throws XmlMappingException, IOExceptionSE
      クラスからコピーされた説明: AbstractMarshaller
      指定されたオブジェクトグラフを OutputStream にマーシャリングする抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallermarshalOutputStream 
      パラメーター:
      graph - マーシャリングするオブジェクトグラフのルート
      outputStream - 書き込む OutputStream 
      例外:
      XmlMappingException - 指定されたオブジェクトをライターにマーシャリングできない場合
      IOExceptionSE - I/O 例外が発生した場合
    • marshalOutputStream

      public void marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
      例外:
      XmlMappingException
      IOExceptionSE
    • marshalWriter

      public void marshalWriter(ObjectSE graph, WriterSE writer) throws XmlMappingException, IOExceptionSE
      クラスからコピーされた説明: AbstractMarshaller
      指定されたオブジェクトグラフを Writer にマーシャリングする抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallermarshalWriter 
      パラメーター:
      graph - マーシャリングするオブジェクトグラフのルート
      writer - 書き込む Writer 
      例外:
      XmlMappingException - 指定されたオブジェクトをライターにマーシャリングできない場合
      IOExceptionSE - I/O 例外が発生した場合
    • marshalWriter

      public void marshalWriter(ObjectSE graph, WriterSE writer, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
      例外:
      XmlMappingException
      IOExceptionSE
    • unmarshalStreamSource

      protected ObjectSE unmarshalStreamSource(StreamSourceSE streamSource) throws XmlMappingException, IOExceptionSE
      クラスからコピーされた説明: AbstractMarshaller
      StreamSource を処理するためのテンプレートメソッド。

      この実装は unmarshalInputStream または unmarshalReader に委譲します。

      オーバーライド:
      クラス AbstractMarshallerunmarshalStreamSource 
      パラメーター:
      streamSource - StreamSource
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定されたソースをオブジェクトにマップできない場合
      IOExceptionSE - I/O 例外が発生した場合
    • unmarshalDomNode

      protected ObjectSE unmarshalDomNode(NodeSE node) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定された DOM Node から非整列化するための抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallerunmarshalDomNode 
      パラメーター:
      node - 非整列化するオブジェクトを含む DOM ノード
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定された DOM ノードをオブジェクトにマップできない場合
    • unmarshalXmlEventReader

      protected ObjectSE unmarshalXmlEventReader(XMLEventReaderSE eventReader) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定された Stax XMLEventReader から非整列化するための抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallerunmarshalXmlEventReader 
      パラメーター:
      eventReader - 読み込む XMLEventReader 
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定されたイベントリーダーをオブジェクトに変換できない場合
    • unmarshalXmlStreamReader

      protected ObjectSE unmarshalXmlStreamReader(XMLStreamReaderSE streamReader) throws XmlMappingException
      クラスからコピーされた説明: AbstractMarshaller
      指定された Stax XMLStreamReader から非整列化するための抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallerunmarshalXmlStreamReader 
      パラメーター:
      streamReader - 読み込む XMLStreamReader 
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定されたストリームリーダーをオブジェクトに変換できない場合
    • unmarshalSaxReader

      protected ObjectSE unmarshalSaxReader(XMLReaderSE xmlReader, InputSourceSE inputSource) throws XmlMappingException, IOExceptionSE
      クラスからコピーされた説明: AbstractMarshaller
      特定の SAX XMLReader および InputSource を使用して非整列化するための抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallerunmarshalSaxReader 
      パラメーター:
      xmlReader - 解析する SAX XMLReader 
      inputSource - 解析する入力ソース
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定されたリーダーと入力ソースをオブジェクトに変換できない場合
      IOExceptionSE - I/O 例外が発生した場合
    • unmarshalInputStream

      public ObjectSE unmarshalInputStream(InputStreamSE inputStream) throws XmlMappingException, IOExceptionSE
      クラスからコピーされた説明: AbstractMarshaller
      指定された InputStream から非整列化するための抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallerunmarshalInputStream 
      パラメーター:
      inputStream - 読み込む InputStreamStream 
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定されたストリームをオブジェクトに変換できない場合
      IOExceptionSE - I/O 例外が発生した場合
    • unmarshalInputStream

      public ObjectSE unmarshalInputStream(InputStreamSE inputStream, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
      例外:
      XmlMappingException
      IOExceptionSE
    • unmarshalReader

      public ObjectSE unmarshalReader(ReaderSE reader) throws XmlMappingException, IOExceptionSE
      クラスからコピーされた説明: AbstractMarshaller
      指定された Reader から非整列化するための抽象テンプレートメソッド。
      次で指定:
      クラス AbstractMarshallerunmarshalReader 
      パラメーター:
      reader - 読み込む Reader 
      戻り値:
      オブジェクトグラフ
      例外:
      XmlMappingException - 指定されたリーダーをオブジェクトに変換できない場合
      IOExceptionSE - I/O 例外が発生した場合
    • unmarshalReader

      public ObjectSE unmarshalReader(ReaderSE reader, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
      例外:
      XmlMappingException
      IOExceptionSE
    • convertXStreamException

      protected XmlMappingException convertXStreamException(ExceptionSE ex, boolean marshalling)
      指定された XStream 例外を org.springframework.oxm 階層からの適切な例外に変換します。

      XStream 自体は例外階層でこの区別を行わないため、ブール化フラグを使用して、マーシャリングまたはアンマーシャリング中にこの例外が発生するかどうかを示します。

      パラメーター:
      ex - 発生した XStream 例外
      marshalling - マーシャリング中に例外が発生するか(true)、アンマーシャリングするかを示します (false)
      戻り値:
      対応する XmlMappingException