Я пытаюсь проанализировать XML-файл с вложенными объектами, на которые ссылается уникальный атрибут.
<items>
<item id="firstItem" />
<item id="secondItem">
<dependencies>
<dependency id="firstItem" />
</dependencies>
</item>
</items>
В настоящее время я использую обычный способ и создал новый класс для каждого тега.
@XmlRootElement(name = "items")
public class Items {
private List<Item> items = new ArrayList();
@XmlElement(name = "item")
public List<Item> getItems() {
return items;
}
/* setter */
}
public class Item {
private string id;
private Dependencies dependencies = new Dependencies();
@XmlAttribute(name = "id")
public String getId() {
return id;
}
/* setter */
@XmlElement(name = "dependencies")
public Dependencies getDependencies() {
return dependencies;
}
/* setter */
}
public class Dependencies {
private List<Dependency> dependencies = new ArrayList();
@XmlElement(name = "dependency")
public List<Dependency> getDependencies() {
return dependencies;
}
/* setter */
}
public class Dependency {
private String id;
@XmlAttribute(name = "id")
public String getId() {
return id;
}
/* setter */
}
и прочитайте файл, используя javax.xml.bind.Unmarshaller
Items items = new items();
JAXBContext context = JAXBContext.newInstance(Items.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
items = (Items) unmarshaller.unmarshal(/* My InputStream */);
Предпочтительным результатом будет отдельный класс, который может содержать список самого себя.
public class Item {
private List<Item> dependencies = new ArrayList();
}
Возможно ли это с помощью инструментов xml?