Я не могу получить информацию об атрибутах от Child в xml. Я попробовал несколько разных подходов, и ни один из них не сработал. (получение информации об атрибутах от родителя работает нормально)
- Я работаю с библиотекой JAXB
- XML вложено - + 300K строк
Здесь короткая версия на моем XML
<HarnessContainer xsi:noNamespaceSchemaLocation="xxx" Signature="15D823AAFC2CC91A61E1755C76E621"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Harness HarnessName="" HarnessDate="13.08.2019">
<!--...-->
</Harness>
</HarnessContainer>
Вот мой родительский класс
@XmlRootElement(name = "HarnessContainer")
@XmlAccessorType(XmlAccessType.FIELD)
public class HarnessContainer implements Serializable {
private Harness harness;
@XmlAttribute(name = "Signature")
private String Signature;
public HarnessContainer() {
}
public HarnessContainer(Harness harness, String signature) {
this.harness = harness;
Signature = signature;
}
//setters and getters
}
Вот мой дочерний класс
@XmlRootElement(name = "Harness")
@XmlAccessorType(XmlAccessType.FIELD)
public class Harness implements Serializable {
@XmlAttribute(name = "HarnessDate")
private String harnessDate;
public Harness() {
}
public Harness(String harnessDate) {
this.harnessDate = harnessDate;
}
//setters and getters
}
Это вызывающий класс
public class main {
public static void main(String[] args) throws JAXBException, IOException {
File xmlFile = new File("C:\\Users\\Mini\\Desktop\\Desktop\\file.xml");
JAXBContext jaxbContext;
try {
jaxbContext = JAXBContext.newInstance(HarnessContainer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
HarnessContainer harnessContainer = (HarnessContainer) jaxbUnmarshaller.unmarshal(xmlFile);
System.out.println(harnessContainer.getHarness().getHarnessDate());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
Я решил использовать @XmlAccessorType (XmlAccessType.FIELD), потому что я планирую иметь много полей, и этот тип аксессуара, кажется, подходит для этого. Я также пробовал разные аннотации, но они не работали.