【问题标题】:How to unmarshalling xml with different tags如何用不同的标签解组xml
【发布时间】:2017-03-09 09:23:05
【问题描述】:

我有这个 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 中的结果必须是:一些啤酒,一些另一种啤酒,一些食物,一些另一种食物。

感谢之前花时间解决我的问题。

【问题讨论】:

    标签: java xml parsing jaxb unmarshalling


    【解决方案1】:

    你真的需要 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 来完成这项任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多