Я никогда не использовал XStream, но следующую объектную модель можно использовать для представления вашего XML-документа. Я включил стандартные аннотации JAXB (включенные в Java SE 6) для демонстрации сопоставления XML.
PlacementRules
import java.util.List;
import javax.xml.bind.*;
@XmlRootElement(name="placement_rules")
@XmlAccessorType(XmlAccessType.FIELD)
public class PlacementRules {
private List<Section> section;
}
Раздел
import java.util.List;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class Section {
@XmlAttribute
private String name;
@XmlElementWrapper(name="front_order")
@XmlElement(name="article_type")
private List<Article> frontOrderArticles;
@XmlElementWrapper(name="back_order")
@XmlElement(name="article_type")
private List<Article> backOrderArticles;
}
Статья
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class Article {
@XmlAttribute
private String name;
}
Ниже приведен пример программы, демонстрирующей ее работу:
import java.io.File;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext context = JAXBContext.newInstance(PlacementRules.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
File xml = new File("src/forum38/input.xml");
PlacementRules placementRules = (PlacementRules) unmarshaller.unmarshal(xml);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(placementRules, System.out);
}
}