我编写了一个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,它有两个Country
和City
的访问者
谢谢你, Prathap。
答案 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);
答案 2 :(得分:0)
您可以使用XMLBeans库来解析XML。
http://xmlbeans.apache.org/documentation/tutorial_getstarted.html