我有一个看起来像这样的课
@XmlRootElement(name="root")
public class MyClass {
@XmlElementWrapper(name="list")
@XmlElement(name="item")
private List<String> myList = new ArrayList<String>();
// getters, setters
}
我想向列表元素添加一个属性a以达到以下XML
<root>
<list a="1">
<item>a</item>
<item>b</item>
...
</list>
</root>
答案 0 :(得分:0)
您可以为此列表创建另一个类,如下所示:-
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement(name="list")
public class RootList {
private String a;
private List<String> someList;
@XmlAttribute(name="a")
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
@XmlElement(name="item")
public List<String> getSomeList() {
return someList;
}
public void setSomeList(List<String> someList) {
this.someList = someList;
}
public RootList(String numValue,List<String> someListValue) {
this();
this.a = numValue;
this.someList = someListValue;
}
public RootList() {
// TODO Auto-generated constructor stub
}
}
要使用JAXB运行上述代码,请使用以下代码:
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.*;
public class Test {
public static void main(String[] args) throws Exception {
List<String> arg = new ArrayList<String>();
arg.add("a");
arg.add("b");
RootList root = new RootList("1", arg);
JAXBContext jc = JAXBContext.newInstance(RootList.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(root, System.out);
}
}
它将生成以下XML作为输出:
<list a="1">
<item>a</item>
<item>b</item>
</list>