gpt4 book ai didi

java - 使用 JAXB 解码 XML

转载 作者:行者123 更新时间:2023-12-04 05:13:02 25 4
gpt4 key购买 nike

我有一个要解码的 XML 文件,但我不知道该怎么做。

XML 看起来像

<config>
<params>
<param>
<a>draft</a>
<b>Serial</b>
</param>
<param>
<a>amt</a>
<b>Amount</b>
</param>
</params>
<server>
<scheme>http</scheme>
<host>somehost.com/asdf</host>
</server>
</config>

当我将参数作为根元素并且没有服务器元素或配置作为根元素时,我以前可以解码。

我添加了一个配置类来尝试解码它,但我不知道我哪里出错了。

我的课看起来像
@XmlRootElement
public class Config {

private Params params = new Params();

@XmlElement(name="params")
public Params getParams() {
return params;
}
public void setParam(Params params) {
this.params = params;
}
}

public class Params {
private List<Param> params = new ArrayList<Param>();

public List <Param> getParam() {
return params;
}

public void setParam(List<Param> params) {
this.params = params;
}
}

public class Param {
String a;
String b;
//getters and setters. omitted for brevity
}

解码代码
File file = new File("C:\\config.xml");
InputStream inputStream = new FileInputStream(file);
JAXBContext jc = JAXBContext.newInstance(Config.class);
Unmarshaller u = jc.createUnmarshaller();
conf = (Config) u.unmarshal(file);
System.out.println(conf.getParams().getParam().size());

println 打印 0。我哪里出错了?

我知道我还没有服务器节点的任何代码,还没有到达那里。我的实际 XML 还没有那个节点,我仍然无法让它在 config 标签内正确解码参数。

最佳答案

您只需要进行以下更改即可。将 Config 中的 setParams 方法更改为

@XmlElement(name = "params") //<--Annotation added here
public void setParam(Params params) {
this.params = params;
}

关于java - 使用 JAXB 解码 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14658921/

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