如何在spring mvc中使用XStream反序列化xml

时间:2012-05-08 16:53:00

标签: spring-mvc xstream

我收到了这个

<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中的unmarchal方法并将Object返回给

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而不是简单的String作为XStream中的fromXml方法时,问题出现了。

感谢THIS我想出了如何从字符串中获取结果对象,但不确定是否是最好的方法。

1 个答案:

答案 0 :(得分:1)

完全同意春天应该处理所有编组/解组的东西。 您需要的一切是将 XStreamMarshaller 声明为消息转换器之一。 这可以通过 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>