Cześć.
Mam problem, z którym męczę się już dłuższy czas.
Mam plik o nazwie "test.xml":
<?xml version="1.0" encoding="UTF-8"?>
<testowa miastoTest="jakiś napis">
<pozycja miasto2="Bielsko-Biała" kod="43-300"/>
</testowa>
Chcę odczytać z niego zawartość "miasto2" oraz "kod". Szukając rozwiązania w internecie, stworzyłem metodą prób i błędów trzy klasy:
Pierwsza: która ma zainicjować wczytywanie
package XMLListLoader;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class cXMLProductRootLoader {
public cXMLProductRootLoader() throws JAXBException {
File file = new File("test.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(testowa.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
testowa postCode = (testowa) jaxbUnmarshaller.unmarshal(file);
System.out.println("Test: "+postCode.getTestMiasto()+" | Miasto: " + postCode.getPozycja().getMiasto() + " | Kod: " + postCode.getPozycja().getKod());
}
}
Druga: która ma odczytać główną gałąź 'testowa'
package XMLListLoader;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class testowa {
@XmlAttribute(name="miastoTest")
private String miastoTest;
pozycja cPozycja = new pozycja();
public pozycja getPozycja() {
return cPozycja;
}
public String getTestMiasto() {
return miastoTest;
}
}
No i trzecia, która miała odczytać pożądane wartości:
package XMLListLoader;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class pozycja {
@XmlAttribute
private String miasto2;
@XmlAttribute
private String kod;
public pozycja() {}
public String getMiasto() { return miasto2; }
public String getKod() { return kod; }
}
Po kompilacji kodu dostaję taki rezultat:
Test: jakiś napis | Miasto: null | Kod: null
Niestety nie mam pojęcia gdzie jest błąd. Czy ktoś może mi z tym pomóc?