[英]Convert a raw XML string into a list of java objects?
好的-我知道这应该很容易-但是出于某种原因-我无法使它正常工作!
可以说我有以下POJO:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class PlainOldJavaObject implements Serializable {
private long uuid;
private String name;
public PlainOldJavaObject() {
}
public long getUuid() {
return this.uuid;
}
public void setUuid(long uuid) {
this.uuid = uuid;
}
public String getNamen() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
/* Omitted HashCode & Equals for brevity. */
}
可以说我有以下xml(出于可读性的考虑,对它进行了格式化-实际上,我将其作为未格式化的原始字符串来获取):
<PlainOldJavaObjects>
<PlainOldJavaObject>
<uuid>8119</uuid>
<name>Jimmy</name>
</PlainOldJavaObject>
<PlainOldJavaObject>
<uuid>2372</uuid>
<name>Johns</name>
</PlainOldJavaObject>
</PlainOldJavaObjects>
如何在现成的地狱中将XML转换为List实例?
我尝试使用XStream-如下所示:
XStream xStream = new XStream();
List<PlainOldJavaObject> endResultHopefully = (List<PlainOldJavaObject>) xStream.fromXML(result);
但是似乎所有操作似乎都将以下内容打印到我的终端上...
PlainOldJavaObjects : PlainOldJavaObjects
我到底在做什么错呢?
注意:添加JAXB标记是出于对这一点的考虑-我认为这是存在的,并且我想它可能是我想要的-但我不确定,也许有人对这个社区可能有一些指导意见吗?
使用XStream,并使用@XStreamImplicit将您的类包装在一个包含PlainOldJavaObject列表的PlainOldJavaObjects类中。 这是一个例子。 首先,向您的PlainOldJavaObject类添加注释
@XStreamAlias("PlainOldJavaObject")
public class PlainOldJavaObject implements Serializable
{
private long uuid;
private String name;
public PlainOldJavaObject()
{
}
public long getUuid()
{
return this.uuid;
}
public void setUuid(long uuid)
{
this.uuid = uuid;
}
public String getNamen()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
}
将@XStreamImplicit添加到PlainOldJavaObject列表
@XStreamAlias("PlainOldJavaObjects")
public class PlainOldJavaObjects
{
@XStreamImplicit
private List<PlainOldJavaObject> pojoList = new
ArrayList<PlainOldJavaObject>();
public void addPojo(final PlainOldJavaObject pojo)
{
pojoList.add(pojo);
}
public List<PlainOldJavaObject> getList()
{
return pojoList;
}
}
类以测试结果。 首先将生成的xml写入字符串。 然后使用字符串创建所需的列表。
public class TestXML
{
@Test
public void testXML()
{
PlainOldJavaObjects pojos = new PlainOldJavaObjects();
PlainOldJavaObject pojo = new PlainOldJavaObject();
pojo.setName("Jimmy");
pojo.setUuid(8119);
pojos.addPojo(pojo);
PlainOldJavaObject pojo2 = new PlainOldJavaObject();
pojo2.setName("Johns");
pojo2.setUuid(2372);
pojos.addPojo(pojo2);
XStream xstream = new XStream();
xstream.processAnnotations(PlainOldJavaObjects.class);
xstream.processAnnotations(PlainOldJavaObject.class);
String xml = xstream.toXML(pojos);
System.out.println(xml);
PlainOldJavaObjects pojos2 = (PlainOldJavaObjects)
xstream.fromXML(xml);
// list with two PlainOldJavaObject
assertEquals(2, pojos2.getList().size());
}
}
xml的输出:
<PlainOldJavaObjects>
<PlainOldJavaObject>
<uuid>8119</uuid>
<name>Jimmy</name>
</PlainOldJavaObject>
<PlainOldJavaObject>
<uuid>2372</uuid>
<name>Johns</name>
</PlainOldJavaObject>
</PlainOldJavaObjects>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.