如何使用不同的标签解组xml

时间:2017-03-09 09:23:06

标签: 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时,我收到了结果:&#34;一些啤酒&#34;和#34;另一种啤酒&#34;,因为anotation和标签名称。 那么如何解析&#34; root&#34; 标记中的所有子项。 即结果必须是:一些啤酒,另一些啤酒,一些食物,另一些食物。

先前感谢您支付我的问题的时间。

1 个答案:

答案 0 :(得分: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来完成这项任务。