2

我怎样才能得到一个看起来像这样的xml:

<request>
  <User>
    <name>name value</name>
    <age>13</age>
  </User>
</request>

然后我可以将其反序列化为具有匹配属性的用户对象。

public class User {
  private String name;
  private Integer age;

  // getter and setters
}

有什么简单的我可以做的还是我必须为此手动解析xml?

我正在使用spring mvc,这是一种将发布xml的方法。

4

2 回答 2

3

你的控制器方法应该接受一个类型为 的参数User,并用 注释@RequestBody。然后你需要配置一个MarshallingHttpMessageConverter适当的编组器/解组器。直接来自参考指南的示例:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
      <util:list id="beanList">
        <ref bean="stringHttpMessageConverter"/>
        <ref bean="marshallingHttpMessageConverter"/>
      </util:list>
    </property
</bean>

<bean id="stringHttpMessageConverter" 
       class="org.springframework.http.converter.StringHttpMessageConverter"/>

<bean id="marshallingHttpMessageConverter" 
      class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
  <property name="marshaller" ref="castorMarshaller" />
  <property name="unmarshaller" ref="castorMarshaller" />
</bean>

<bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller"/>

请查看参考指南中的“支持的方法参数类型”“使用 @RequestBody 注释映射请求正文”以获取更多详细信息。

于 2012-12-27T01:30:57.240 回答
0

您可以使用摘要。它将您的 XML 元素绑定到您的 POJO。这是一个完整的教程: http: //onjava.com/pub/a/onjava/2002/10/23/digester.html

于 2012-12-27T00:20:00.883 回答