1.通过注解适配请求String
@RequestBody String requestBody
//收到微信服务器的http:xml请求
WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(requestBody);
//返回微信服务器的http:xml响应
WxMpXmlOutMessage outMessage = this.route(inMessage);
XStream在toXML的时候对于Null值不进行标签输出
2.将请求由String-->Xml:使用 XStream
2.1 java转换xml
public void testXml(){
City city = new City();
city.setName("北京");
city.setDescription("中国首都");
XStream xstream = new XStream();
xstream.alias("city", City.class);//若不写这句,根标签是City的全路径名
String xml = xstream.toXML(city);
System.out.println(xml);
}
<city>
<name>北京</name>
<description>中国首都</description>
</city>
2.2 List集合转化为XML
@Test
public void test2(){
City city = new City("天津", "直辖市");
City city2 = new City("重庆", "也是直辖市");
List<City> cityList = new ArrayList<City>();
cityList.add(city);
cityList.add(city2);
XStream xstream2 = new XStream();
xstream2.alias("直辖市", City.class); //设置一个JavaBean的根标签
xstream2.alias("cities", List.class); // 设置整体集合的根标签,若不写,根标签变为<list>
String c = xstream2.toXML(cityList);
System.out.println(c);
}
<cities>
<直辖市>
<name>天津</name>
<description>直辖市</description>
</直辖市>
<直辖市>
<name>重庆</name>
<description>也是直辖市</description>
</直辖市>
</cities>
2.3 XML转换为java
@Test //将一个xml文件中的数据读取出来,并形成集合,集合中放的是city对象
public void test3() throws Exception{
XStream xstream = new XStream();
//起别名
xstream.alias("city", City.class);
xstream.alias("cities", List.class);
List<City> list = (List<City>) xstream.fromXML(new FileInputStream("src/cities.xml"));
for (City city : list) {
System.out.println(city.getName()+","+city.getDescription());
}
}
2.4 使用注解配置映射关系
//在类上添加 @XStreamAlias("city")
//在属性上添加@XStreamAsAttribute
//如果再属性上添加 @XStreamOmitField 注解,则该属性将不会解析为 xml 中的属性
@XStreamAlias("city")
public class City {
@XStreamAsAttribute
private String name;
@XStreamAsAttribute
private String description;
//封装……
public City() {
}
public City(String name, String description) {
super();
this.name = name;
this.description = description;
}
@Override
public String toString() {
return "City [name=" + name + ", description=" + description + "]";
}
}
@Test //引入注解
public void test4() throws Exception{
City city1_1 = new City("长沙","娱乐之都");
City city1_2 = new City("韶山","伟人故居");
City city2_1 = new City("石家庄","河北省会");
City city2_2 = new City("承德","避暑山庄");
List<City> cities1 = new ArrayList<City>();
cities1.add(city1_1);
cities1.add(city1_2);
List<City> cities2 = new ArrayList<City>();
cities2.add(city2_1);
cities2.add(city2_2);
XStream xstream = new XStream();
//引入一行代码,进行注解的检测
xstream.autodetectAnnotations(true);
System.out.println(xstream.toXML(cities1));
System.out.println(xstream.toXML(cities2));
}
}
<list>
<city name="长沙" description="娱乐之都"/>
<city name="韶山" description="伟人故居"/>
</list>
<list>
<city name="石家庄" description="河北省会"/>
<city name="承德" description="避暑山庄"/>
</list>