我正在尝试在解组和xml文件之后填充一个arraylist,但是它解组到一个对象,我怎么能把每个单独的项目都复制到像数组一样的其他东西?
我可以编组和解组,但除了记忆的其他内容之外,不能从对象中得到任何东西。
这是unmarshalling
try {
File file = new File("xmlFiles/ipAdresses.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(IpAdressXmlHandler.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
IpAdressXmlHandler xmlList = (IpAdressXmlHandler) jaxbUnmarshaller.unmarshal(file);
System.out.println(xmlList);
} catch (JAXBException e) {
e.printStackTrace();
}
如何将xmlList作为数组?或者我如何把一切都拿出来?
IpAdressXmlHandler类:
@XmlRootElement
public class IpAdressXmlHandler {
private String ipAdress;
@XmlElement
public String getIpAdress() {
return ipAdress;
}
public void setIpAdress(String ipAdress) {
this.ipAdress = ipAdress;
}
更新:xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ipAdressXmlHandler>
<ipAdress>localhost</ipAdress>
</ipAdressXmlHandler>
以后有多个IP地址,我需要它们在数组或arraylist中
答案 0 :(得分:2)
public class IpAdressXmlHandler {
@XmlElement(name="ipAdress")
private String ipAdress;
public String getIpAdress() {
return ipAdress;
}
public void setIpAdress(String ipAdress) {
this.ipAdress = ipAdress;
}
@XmlRootElement(name="ipAdressXmlHandler")
public class IpAdressListXmlHandler {
@XmlElement(name="ipAdress")
private List<IpAdressXmlHandler> ipAdress;
public List<IpAdressXmlHandler> getIpAdressList() {
return ipAdress;
}
public void setIpAdressList(List<IpAdressXmlHandler> ipAdress) {
this.ipAdress = ipAdress;
}
使用IpAdressListXmlHandler类进行解组..
答案 1 :(得分:1)
IpAdressXmlHandler
是代表您XML
的实体,只要在此XSD
的{{1}}定义中,只有一个标记允许您永远不会获得XML
List
1}}。
<强>解强>
您的XSD
定义必须maxoccurs="otbounded"
或类似,以允许各种<IpAdressXmlHandler>
标记。完成后,JaxB
会自动生成getter
,返回List<IpAdressXmlHandler>
。
<强>更新强>
IMO我会根据您的xml规范创建一个XSD
文件...将其放入您的工作区并Right click > Generate > JaxB classes
。
如果您想获得List<IpAdressXmlHandler>
,则必须为包含List<IpAdressXmlHandler>
的xml创建一个包装器并将其返回,但您必须解组包装器,而不是IpAdressXmlHandler
强>
类似的东西:
class IpWrapper{
private List<IpAdressXmlHandler> ipList;
@XmlElement
public List<IpAdressXmlHandler> getIpAdressXmlHandler() {
return ipList;
}
}
和
JAXBContext jaxbContext = JAXBContext.newInstance(IpWrapper.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();