以String形式返回的XML需要转换为java bean

时间:2013-09-03 07:51:37

标签: java xml string

我编写了一个java Web服务客户端程序,该程序调用一个方法,该方法将国家名称作为输入参数,并将City名称作为String格式返回。

返回并存储在String变量中的示例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,它有两个CountryCity的访问者

谢谢你, Prathap。

3 个答案:

答案 0 :(得分:2)

您应该使用JAXB执行此任务,它是将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

}

这对你有用。您还可以使用@XmlElement(name="")自定义XML元素与Java属性的绑定。

答案 1 :(得分:1)

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

这将代表XML的“Table”元素。

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

// getters and setters
}

这是你的“NewDataSet”,它包含一个“Table”元素列表:

@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;
    }
}

现在使用JAXB unmarshaller,您可以创建“NewDataSet”的实例:

JAXBContext jaxbContext = JAXBContext.newInstance(NewDataSet.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader("your xml as string");
NewDataSet newDataSet = (NewDataSet) unmarshaller.unmarshal(reader);

参考:Java Architecture for XML Binding (JAXB)

答案 2 :(得分:0)

您可以使用XMLBeans库来解析XML。

http://xmlbeans.apache.org/documentation/tutorial_getstarted.html