java - 如何使用不同的标签解码 xml

标签 java xml parsing jaxb unmarshalling

我有这个 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/

相关文章:

xml - Xslt 更改节点并添加命名空间

python - 根据特定模式解析文件结构

python - 将自定义公式转换为 python 函数

java - 解决了在 linkedin 页面中发布共享时网址不起作用的问题

java - 在 FXML 中使用 Controller 时出现 NullPointerException

xml - HTML5 中的 SVG – 什么时候需要 XML 声明 `<?xml version="1. 0"encoding="UTF- 8"?>`?

java - 操作栏上没有可见图标(Android 编程)

c# - 我应该为失败的文件解析抛出什么异常?

java - 出现 "No enclosing instance of type..."错误

java - 从不同线程将值添加到全局集中并等待所有线程完成