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