当前位置: 首页 > 知识库问答 >
问题:

使用JAXB将XML数据解析为字符串对象

潘志国
2023-03-14

我必须在JAXB中将xml解析为字符串对象。但是如何为这个xml创建对象

Country.xml

    <?xml version="1.0" encoding="UTF-8"?> 
    <Country>       
        <name>India</name>
        <capital>New Delhi</capital>
        <population>120crores</population>
    .
    .
    .
    .
    .

<states>
    <state>
        <name>Maharastra</name>
        <pincode>xyzzzz</pincode>
        <capital>Mumbai</capital>

    <\state>

    <state>
    .
    .
    .
    </state>
</states>


   <\Country>       

为了解析这个xml,我创建了一个类来映射对象,它创建对象并在控制台中打印出来。却不知道自己做错了什么。

@XmlElementWrapper(name="Country")
    public void setCountry(String Countryv) {
        Country= Countryv;
    }

@XmlElement (name = "name")
    public void setname(String namev) {
        name= namev;
    }

    @XmlElement (name = "capital")
    public void setcapital(String capitalv) {
        capital= capitalv;
    }

    @XmlElement (name = "population")
    public void setpopulation(String populationv) {
        population= populationv;
    }


    @XmlElementWrapper(name="states")
    public void setType(String statesv) {
        states = statesv;
    }



@XmlElementWrapper(name="state")
        public void setType(String statev) {
            state = statev;
        }




    @XmlElement (name = "name")
        public void setpopulation(String namev) {
            name= namev;
        }

     @XmlElement (name = "pincode")
        public void setpopulation(String pincodev) {
            pincode= pincodev;
        }

 @XmlElement (name = "capital")
        public void setpopulation(String capitalv) {
            capital= capitalv;
        }

当我运行程序时,我会得到

com . sun . XML . internal . bind . v2 . runtime . illegalanotationexception:illegalanotationexceptions的计数

如何添加包装器来包装单独标题下的元素和其他标题内的标题。

共有2个答案

冷吉星
2023-03-14

这对我很管用

class Country {
    @XmlElement
    String name;
    //...
    @XmlElementWrapper(name="states")
    List<State> state;
}

class State {
    @XmlElement
    String name;
    //..
}
慕容康安
2023-03-14

试试这个课程

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "name",
    "capital",
    "population",
    "states"
})
@XmlRootElement(name = "Country")
public class Country {
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected String capital;
@XmlElement(required = true)
protected String population;
@XmlElement(required = true)
protected Country.States states;
    public String getName() {
        return name;
    }
    public void setName(String value) {
        this.name = value;
    }
    public String getCapital() {
        return capital;
    }
    public void setCapital(String value) {
        this.capital = value;
    }
    public String getPopulation() {
        return population;
    }
    public void setPopulation(String value) {
        this.population = value;
    }
    public Country.States getStates() {
        return states;
    }
    public void setStates(Country.States value) {
        this.states = value;
    }
 类似资料:
  • 问题内容: 如何使用下面的代码解组XML字符串并将其映射到下面的JAXB对象? 问题答案: 要传递XML内容,您需要将内容包装在中,然后将其解组:

  • 问题内容: 我有一个将存储Number对象的列表。该列表将通过分析字符串列表来填充,其中每个字符串都可以表示Number的任何子类。 如何将字符串解析为通用数字,而不是特定的整数或浮点数? 问题答案: 数字不能实例化,因为它是抽象类。我建议传入数字,但是如果您设置为字符串,则可以使用任何子类来解析它们, 要么 @请参阅NumberFormat

  • 我有一个XML文件,其中包含大量员工记录(比如高达1M),如下所示: 我使用JAXB将员工记录映射到以下Java对象: XML的内容不能被更改,并且给定这个XML,我如何使用JAXB将每个员工XML记录解封给员工对象,以便我可以逐个处理它?

  • 问题解决 将XmlElementRef注释更改为@XmlElementRef(name=“Option”,type=Option.class,required=false)后,将@XmlRootElement(name=“Option”)添加到选项中。班 更新: 根据laune的建议,我添加了两个类(Options和Option),并修改了GuimopProperties类,如下所示 但当我必须新

  • 我有这样一个XML字符串: 当我试图将字符串读入这样的对象时 我得到以下错误: 我在类中使用@JsonProperty是因为@XmlElement还有其他问题。如果我在ResultModel类中排除字段QueryResults,那么字符串的解析工作正常,看起来是正确的。我做错了什么?我对Java中XML字符串的解析非常陌生,所以我希望有一些简单的方法来解决这个问题。。。