xstream 小结 一个标签下有多个同名标签

有多个同名标签时怎么解析

方式一用加注解的方式

xml文件中,有多个元素response,a,b,c,d,name

5个name 中国,美国,俄罗斯,英国,法国

 

1)bean.java

2)在list上加注解

  @XStreamImplicit(itemFieldName="searchContent")// @XStreamImplicit加注解,itemFieldName说明隐含的元素名

3)在test.java中,在根节点转换之前调用

stream.autodetectAnnotations(true);

 

 

package bean;

public class Testresponse {
 
 private User user;

 public User getUser() {
  return user;
 }

 public void setUser(User user) {
  this.user = user;
 }
}

 

package bean;

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamImplicit;


public class User {
 @XStreamImplicit(itemFieldName="name")//标注加在list上
private List<String> name;

public List<String> getName() {
 return name;
}

public void setName(List<String> name) {
 this.name = name;
}

}

 

package bean;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.util.HashMap;
import java.util.Set;
import com.thoughtworks.xstream.XStream;

public class Test {
 @SuppressWarnings("unchecked")
 public static void main(String args[]) {
  Reader reader = null;
  File file = new File(
    "C://Users//ThinkPad//workspace8//xstreamtest//WebRoot//a.xml");
  try {
   reader = new FileReader(file);

   XStream xstream = new XStream();

   HashMap<String, Class> hashmap = new HashMap<String, Class>();
   hashmap.put("user", User.class);
   hashmap.put("reponse", Testresponse.class);

   Set<String> keyset = hashmap.keySet();
   for (String str : keyset) {
    xstream.alias(str, hashmap.get(str));
   }

   xstream.autodetectAnnotations(true);
   Testresponse response = (Testresponse) xstream.fromXML(reader);
   System.out.println(response);
   String s = xstream.toXML(response);
   System.out.println(s);

  } catch (Exception e) {
   e.printStackTrace();
  }

 }
}

 

 

<?xml version="1.0" encoding="UTF-8"?>
<reponse>
  <user>
   <name>jack1</name>
   <name>jack2</name>
   <name>jack3</name>
  </user>
</reponse>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值