2010-08-22 7 views
0

Je cherche à construire des objets javaXstream question et objet java

<placement_rules> 
    <section name="news"> 
    <front_order> 
     <article_type name="article1"></article_type> 
     <article_type name="article2"></article_type> 
    </front_order> 
    <back_order> 
     <article_type name="article3"></article_type> 
    </back_order> 
    </section> 
    <section name="sports"> 
    <front_order> 
     <article_type name="article4"></article_type> 
    </front_order> 
    <back_order> 
     <article_type name="article5"></article_type> 
     <article_type name="article6"></article_type> 
    </back_order> 
    </section> 
</placement_rules> 

Quels sont les objets que j'ai besoin de créer?

je commence à l'intérieur SectionRule.java

@XStreamAsAttribute 
@XStreamAlias("name") 
private String sectionName; 

@XStreamAlias("front_order") 
private List<ConfigPlacementNode> frontOrder = new ArrayList<ConfigPlacementNode>(0); 

@XStreamAlias("back_order") 
private List<ConfigPlacementNode> backOrder = new ArrayList<ConfigPlacementNode>(0); 

Comment créer d'autres objets de première classe autour d'elle? Toute aide sera grandement appréciée.

Cordialement, Amar

Répondre

1

Je n'ai jamais utilisé Xstream, mais le modèle d'objet suivant pourrait être utilisé pour représenter votre document XML. J'ai inclus les annotations JAXB standard (incluses dans Java SE 6) pour illustrer un mappage XML.

PlacementRules

import java.util.List; 
import javax.xml.bind.*; 

@XmlRootElement(name="placement_rules") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class PlacementRules { 

    private List<Section> 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; 

} 

Article

import javax.xml.bind.annotation.*; 

@XmlAccessorType(XmlAccessType.FIELD) 
public class Article { 

    @XmlAttribute 
    private String name; 

} 

Voici une samp le programme pour démontrer le fonctionnement:

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); 
    } 
}