gpt4 book ai didi

java - 使用 jaxb 编码列表列表

转载 作者:行者123 更新时间:2023-11-29 08:54:27 24 4
gpt4 key购买 nike

我创建了这样一个类

 @XmlRootElement(name="mylist")

public class JaxbList<T>{

@XmlElementWrapper(name="list")
@XmlElement(name="Item")
protected List<T> list;

public JaxbList(){}

public JaxbList(List<T> list){
this.list=list;
}
public List<T> getList(){
return list;
}
}

这是主类:

List<String> list = new ArrayList<String>();
list.add("COlumn 1");
list.add("COlumn 2");
list.add("COlumn 3");

@SuppressWarnings({ "rawtypes", "unchecked" })
JaxbList jaxbList = new JaxbList(list);
PDFHandler handler = new PDFHandler();

try {
ByteArrayOutputStream baos = handler.getXMLSource(jaxbList);
handler.createPDFFile(baos, "");
System.out.println(jaxbList);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

这是我的编码方法:

public ByteArrayOutputStream getXMLSource(JaxbList jaxbList) throws Exception {
JAXBContext context;

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

try {
context = JAXBContext.newInstance(JaxbList.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(jaxbList, outStream);
} catch (JAXBException e) {

e.printStackTrace();
}
return outStream;

}

编码方法创建以下 XML:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mylist>
<list>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
</list>
</mylist>

现在我想整理一个列表列表:

protected List<List<String>> list

XML 输出应如下所示:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mylist>
<list>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
</list>
<list>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 1</Item>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 2</Item>
<Item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">COlumn 3</Item>
</list>
</mylist>

提前致谢!

最佳答案

这是一个示例:

public class Test{
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "mylist")
static class MyList<T> {

@XmlAnyElement
protected Collection<Collection<T>> list;

public MyList() {
}

public MyList(Collection<Collection<T>> list) {
this.list = list;
}

public Collection<List<T>> getList() {
return list;
}
}

@XmlRootElement(name = "sublist")
@XmlAccessorType(XmlAccessType.FIELD)
static class List<T> {
@XmlAnyElement
protected Collection<T> sublist;

public Collection<T> getSublist() {
return sublist;
}

public void setSublist(Collection<T> sublist) {
this.sublist = sublist;
}

public List() {
}
}

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
static class Item {
@XmlValue
private String value;

public Item(){

}
public Item(String value){
this.value = value;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}
}
public static void main(String[] args){
try {
context = JAXBContext.newInstance(MyList.class, List.class, Item.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(jaxbList, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}

关于java - 使用 jaxb 编码列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20997527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com