gpt4 book ai didi

java - 如何生成具有可变值节点的 XML

转载 作者:行者123 更新时间:2023-11-30 01:49:42 26 4
gpt4 key购买 nike

我需要使用 jaxb 生成 XML,其中我们有变量值节点。我们可以有 3 个值或 5 个值,甚至更多,例如

<custom-attribute>
<value>Green</value>
<value>Red</value>
</custom-attribute>

在pojo中我们可以像下面这样使用List

class CustomAttribute() {
@XmlValue
@XmlList
public List<String> value
}

但这会添加带有空格分隔字符串的值,如下所示

<custom-attribute>Green Red</custom-attribute>

如何生成具有多个值节点的所需 XML?

最佳答案

下面我提供了代码,你可以尝试运行一下。

首先,您必须创建一个名为 Value 的类,如下所示。

import javax.xml.bind.annotation.XmlValue;

public class Value {

private String data;

@XmlValue
public String getData() {
return data;
}

public void setData(String data) {
this.data = data;
}
}

然后您必须创建一个名为 CustomAttribute 的类,如下所示。

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.List;

@XmlRootElement(name = "custom-attribute")
@XmlAccessorType(XmlAccessType.PROPERTY)
class CustomAttribute {

public List<Value> value;

public List<Value> getValue() {
return value;
}

public void setValue(List<Value> values) {
this.value = values;
}


}

我在下面提供了测试类来检查。

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.util.ArrayList;
import java.util.List;

public class TestCustomAttribute {
public static void main(String[] args) throws Exception {
List<Value> valueList = new ArrayList<>();
Value value1 = new Value();
value1.setData("Green");
valueList.add(value1);

Value value2 = new Value();
value2.setData("Red");
valueList.add(value2);

CustomAttribute ca = new CustomAttribute();
ca.setValue(valueList);

JAXBContext jaxbContext = JAXBContext.newInstance(CustomAttribute.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

jaxbMarshaller.marshal(ca, System.out);
}
}

形成的XML将是这样的。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<custom-attribute>
<value>Green</value>
<value>Red</value>
</custom-attribute>

关于java - 如何生成具有可变值节点的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490752/

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