我有这个 xml 代码:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<beer>some beer</beer>
<beer>some another beer</beer>
<food>some food</food>
<food>some another food</food>
</root>`enter code here`
要使用 JAXB 解码此 xml,我使用此源:
@XmlElement(name="beer")
public void setKey(Set<String> key)
{
this.key = key;
}
当我为 Set 解码 xml 时,我收到了结果:“一些啤酒”和“另一些啤酒”,因为注释和标签名称。 那么我如何解析 "root" 标签中的所有子项。 即 Set 中的结果必须是:一些啤酒,另一些啤酒,一些食物,另一些食物。
感谢您之前花时间解决我的问题。
最佳答案
您真的需要 JAXB 吗? 如果是这样,也许这样的事情会有所帮助:
import java.util.ArrayList;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"beer",
"food"
})
@XmlRootElement(name = "root")
public class Root {
@XmlElement(required = true)
protected List<Beer> beer;
@XmlElement(required = true)
protected List<Food> food;
public List<Beer> getBeer() {
if (beer == null) {
beer = new ArrayList<Beer>();
}
return this.beer;
}
public List<Food> getFood() {
if (food == null) {
food = new ArrayList<Food>();
}
return this.food;
}
}
您还需要使用 getter 和 setter 创建 Food 和 Beer 类。对于列表,不需要创建 setter,因为您可以在 getter 之后使用 add()。 但我建议使用 DOM 来完成此任务。
关于java - 如何使用不同的标签解码 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42691373/