以字符串形式返回的XML需要转换为JavaBean

以字符串形式返回的XML需要转换为JavaBean,java,xml,string,Java,Xml,String,我编写了一个JavaWeb服务客户端程序,它调用一个方法,该方法将国家名称作为输入参数,并以XML格式的字符串形式返回城市名称 返回并存储在字符串变量中的示例XML如下所示 <NewDataSet> <Table> <Country>British Indian Ocean Territory</Country> <City>Diego Garcia</City> </Table> &

我编写了一个JavaWeb服务客户端程序,它调用一个方法,该方法将国家名称作为输入参数,并以XML格式的字符串形式返回城市名称

返回并存储在字符串变量中的示例XML如下所示

<NewDataSet>
  <Table>
    <Country>British Indian Ocean Territory</Country>
    <City>Diego Garcia</City>
  </Table>
  <Table>
    <Country>India</Country>
    <City>Ahmadabad</City>
  </Table>
  ......
</NewDataSet>

英属印度洋领土
迭戈·加西亚
印度
艾哈迈达巴德
......
有谁能帮助我将存储在
String
变量中的xml转换为Cities.java bean,该bean有两个访问器,分别用于
Country
City

谢谢,, Prathap.

您应该使用它来完成此任务,它是一种用于将XML文件转换为对象的Java标准

StringReader reader = new StringReader(xmlString);
JAXBContext jaxbContext = JAXBContext.newInstance(Cities.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Cities response = (Cities) unmarshaller.unmarshal(reader);
您还需要像这样注释Cities类

@XmlRootElement
public class Cities {

    @XmlElement
    private String coutry;

    @XmlElement
    private String city;

    //setters and getters

}

这应该对你有用。您还可以使用
@xmlement(name=”“)
自定义XML元素到Java属性的绑定。

您可以使用XMLBeans库解析XML


您可以使用JAXB创建XML文件的对象表示。这里的“NewDataSet”元素包含子(表)元素的列表。使用JAXB,您可以创建一个“NewDataSet”实例,该实例将包含一个“Table”对象列表。然后,您可以遍历列表以获得每个“表”的“国家”和“城市”值。以下是如何做到这一点:

这将表示XML的“Table”元素

@XmlRootElement
public class Table {
private String country;
private String city;

// getters and setters
}
这是您的“NewDataSet”,它包含一个“表”元素列表:

@XmlRootElement
public class NewDataSet {
private List<Table> tableList;

public List<Table> getTableList() {
    return tableList;
}

    @XmlElementWrapper(name = "NewDataSet")
    @XmlElement(name = "Table")
    public void setCustomerList(List<Table> tableList) {
        this.tableList =tableList;
    }
}

Ref:

如果您的成员是私有的,那么JAXB还需要公共getter和setter方法才能工作。
JAXBContext jaxbContext = JAXBContext.newInstance(NewDataSet.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader("your xml as string");
NewDataSet newDataSet = (NewDataSet) unmarshaller.unmarshal(reader);