Originariamente inviato da microprocessore
Ma io non ho problemi nel creare una classe identica a quella illustrata nel file xml, quello che non riesco a fare e inizializzare i due oggetti.
Se fosse solo un oggetto il problema non ci sarebbe.
Se è così allora .... ecco un semplice/veloce esempio che utilizza JAXB 2 (nota: JAXB 2 è disponibile di serie nel framework da Java 6).
File cities.xml (nota: per brevità ci sono solo 2 proprietà della città):
codice:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Cities.xsd"
generated="2010-04-22T13:59:14">
<Cities>
<ID>1</ID>
<Name>Agliè</Name>
</Cities>
<Cities>
<ID>2</ID>
<Name>Airasca</Name>
</Cities>
</dataroot>
File Cities.java
codice:
import java.util.List;
import javax.xml.bind.annotation.*;
@XmlRootElement(name="dataroot")
public class Cities {
private List<City> cityList;
@XmlElement(name="Cities")
public List<City> getCityList() {
return cityList;
}
public void setCityList(List<City> cityList) {
this.cityList = cityList;
}
}
File City.java
codice:
import javax.xml.bind.annotation.*;
public class City {
private long id;
private String name;
@XmlElement(name="ID")
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@XmlElement(name="Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "City[id=" + getId() + ", name=" + getName() + "]";
}
}
File ProvaCities.java
codice:
import java.io.File;
import java.util.List;
import javax.xml.bind.*;
public class ProvaCities {
public static void main(String[] args) {
try {
JAXBContext jc = JAXBContext.newInstance(Cities.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Cities cities = (Cities) unmarshaller.unmarshal(new File("cities.xml"));
List<City> cityList = cities.getCityList();
for (City city : cityList) {
System.out.println(city);
}
} catch (Exception e) {
System.out.println(e);
}
}
}
L'output:
City[id=1, name=AgliÞ]
City[id=2, name=Airasca]
Nota 1: lascio a te il compito di completare/migliorare come credi.
Nota 2: nell'output la 'è' di Agliè è sballata, non è un problema del programma ma della visualizzazione in console. Se apri un JOptionPane con il testo, è corretto!