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 中的 unmarchal 方法并返回要转换的对象

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 时,问题就来了。

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

4

1 回答 1

1

完全同意spring应该处理所有编组/解组的想法。您需要做的就是将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>
于 2012-10-31T09:30:54.513 回答