Можно ли распаковать в XML-файл, как это:Пропустить XML узлов, а демаршалинга XML с JAXB
<company id="bh23" name="imob">
<store>
<store-info id="2392">
<address>NYC</address>
<name>Imob's NYC 5th</name>
</store>
<products>
<product>
<name>keyboard</keyboard>
<price>2000</price>
</product>
<product>
<name>mouse</keyboard>
<price>1000</price>
</product>
</products>
</store>
<store />
</stores>
на классы, подобные этим:
@XmlElementRoot(name = "company")
public class Company {
@XmlAttribute (name = "id")
String id;
@XmlAttribute (name = "name")
String name;
@XmlElement (name = "store")
List<Store>stores;
//all the getters and setters
}
@XmlElementRoot (name = "store")
public class Store {
@XmlAttribute (name = "id")
String id;
@XmlElement (name = "address")
String address;
@XmlElement (name = "name")
String name;
@XmlElementWrapper (name = "products")
@XmlElement (name = "product")
List<Product>products;
//all the getters and setters
}
public class main {
public static void main (String args[]) {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Company.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Company portfolio = (Company) jaxbUnmarshaller.unmarshal(new File(xmlUrlPath));
System.out.println(portfolio.toString());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
Я пытаюсь «пропустить» или «прыгать» в узел с именем «store-info», потому что я не хочу создавать другой класс, просто чтобы сохранить адрес и имя магазина, так как было бы проще «добавить» и адрес, и имя в класс «Store». Конечно, когда я запускаю код, «адрес», «id» и «name» vars становится нулевым, и только список продуктов корректно отменяется. Есть ли способ пропустить узел, объединив свои поля в другой класс? Я избегаю (для «законных» целей) использования MOXy lib и их аннотации XPath.