2010-08-22 4 views
0

XStream을 질문하고 자바 객체

<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> 

객체 내가 뭘 만드는 데 필요한 객체가?

내가

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

어떻게 내가 그것을 주변의 다른 첫 번째 클래스 개체를 만들려면 어떻게해야합니까 SectionRule.java 내부에서 시작하고있다? 어떤 도움을 주시면 감사하겠습니다.

안부, 아마르

답변

1

나는 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; 

} 

은 SAMP입니다 르 프로그램이 작동하는지 보여주기 위해 :

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