Java JAXB:xmlementwrapper嵌套节点
我想生成如下所示的XML:Java JAXB:xmlementwrapper嵌套节点,java,jaxb,Java,Jaxb,我想生成如下所示的XML: <mainNode> <node1></node1> <node2></node2> </mainNode> <mainNode2></mainNode2> 这就是我在代码中生成mainNode1、mainNode2和node1的方式: @XmlElementWrapper(name = "mainN
<mainNode>
<node1></node1>
<node2></node2>
</mainNode>
<mainNode2></mainNode2>
这就是我在代码中生成mainNode1、mainNode2和node1的方式:
@XmlElementWrapper(name = "mainNode")
@XmlElement(name = "node1")
public List<String> getValue() {
return value;
}
@XmlElement(name = "mainNode2")
public String getValue2() {
return value2;
}
@xmlementwrapper(name=“mainNode”)
@xmlement(name=“node1”)
公共列表getValue(){
返回值;
}
@xmlement(name=“mainNode2”)
公共字符串getValue2(){
返回值2;
}
如何将节点2添加到主节点1 您的示例中似乎没有根元素。您可以这样做以获得所需的结构:-
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
class Node {
private MainNode mainNode;
private MainNode2 mainNode2;
public Node() {
}
public Node(MainNode mainNode, MainNode2 mainNode2) {
this.mainNode = mainNode;
this.mainNode2 = mainNode2;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
class MainNode {
private String node1;
private String node2;
public MainNode() {
}
public MainNode(String node1, String node2) {
this.node1 = node1;
this.node2 = node2;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
class MainNode2 {
}
以下是我的测试代码:-
JAXBContext jc = JAXBContext.newInstance(Node.class);
Marshaller m = jc.createMarshaller();
MainNode mainNode = new MainNode("node1 value", "node2 value");
MainNode2 mainNode2 = new MainNode2();
Node node = new Node(mainNode, mainNode2);
StringWriter sw = new StringWriter();
m.marshal(node, sw);
System.out.println(sw.toString());
。。。这是打印件:-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<node>
<mainNode>
<node1>node1 value</node1>
<node2>node2 value</node2>
</mainNode>
<mainNode2/>
</node>
节点1值
节点2值
XmlElementWrapper仅当wrapperElement具有相同类型元素的列表时才应使用
<node>
<idList>
<id> value-of-item </id>
<id> value-of-item </id>
....
</idList>
</node>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
class Node {
@XmlElementWrapper(name = "idList")
@XmlElement(name = "id", type = String.class)
private List<String> ids = new ArrayList<String>;
//GETTERS/SETTERS
}
项目价值
项目价值
....
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
类节点{
@XmlElementWrapper(name=“idList”)
@XmlElement(name=“id”,type=String.class)
私有列表ID=新的ArrayList;
//能手/二传手
}
当wrapperElement具有不同的类型时,该怎么办?@squaleListype=Object.class
然后强制转换它,对您很有用..Ups,我指的是不同的name
值,如问题示例中的“node1”和“node2”