现在的位置: 首页 > 综合 > 正文

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

2018年01月16日 ⁄ 综合 ⁄ 共 1712字 ⁄ 字号 评论关闭

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

方式一用加注解的方式

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>

【上篇】
【下篇】

抱歉!评论已关闭.