0

私はこれを受け取っています

<header><h1>001</h1><h2>002</h2></header>

私のディスパッチャは次のようになります

<bean id="annotatedMarshaller" class="org.springframework.oxm.xstream.AnnotationXStreamMarshaller">
    <property name="annotatedClasses">
        <list>
        <value>someClasses</value>
        <value>someClasses</value>
        <value>someClasses</value>
        </list>
    </property>
</bean>

ここでは、XstreamMarshaller の非マーシャル メソッドを使用して、キャストするオブジェクトを返します。

public static Object deserializeXml(String xml)  {


    StringReader sr =new StringReader(xml);
    StreamSource ss=new StreamSource(sr);

    Object o=null;
    try {

        o = xStreamMarshaller.unmarshal(ss);

    } catch (XmlMappingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


    return o;
}

問題が発生したのは、unmarshal メソッドが特定のオブジェクトを特定の javax.xml.transform.Result にマーシャリングし、XStream の fromXml メソッドのような単純な String ではないことに気付いたときです。

THISのおかげで、文字列から結果オブジェクトを取得する方法がわかりましたが、これが最善の方法かどうかはわかりません。

4

1 に答える 1

1

スプリングがすべてのマーシャリング/アンマーシャリングを処理する必要があるという考えに完全に同意します。必要なのは、XStreamMarshallerをメッセージ コンバーターの 1 つとして宣言することだけです。これはmvc:annotationセクションで実現できます:

 <mvc:annotation-driven>
  <mvc:message-converters>
      <!-- Your XStream converter. -->
  </mvc:message-converters>
</mvc:annotation-driven>

またはAnnotationMethodHandlerAdapter経由:

 <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <!-- Your XStream converter. -->
            </list>
        </property>
    </bean>
于 2012-10-31T09:30:54.513 に答える