2017-07-14 98 views
-1

我必須使用javax.xml.bind.annotation庫中的註釋在java中編寫Config-Reader。問題是我真的不知道如何到達內部節點(在我的情況下是mailConfig)。下面是我的XML文件的格式:如何使用帶註解的XML從內部節點讀取字符串(Java)

<?xml version="1.0" encoding="UTF-8"> 
<config> 
    <avoidanceList> 
     <avoid> item1 </avoid> 
     <avoid> item2 </avoid> 
    </avoidanceList> 

    <ignoreList> 
     <ignore> item1 </ignore> 
    </ignoreList> 

    <mailConfig> 
    <from> From </from> 

    <toList> 
     <to> To1 </to> 
     <to> To2 </to> 
    </toList> 

    </mailConfig> 
</config> 

我可以在avoidanceList和ignoreList閱讀,但我的代碼不能在整個mailConfig讀取。我在某處讀到兩個班會解決問題,但事實並非如此。這是我的讀者代碼:

@XmlRootElement(name = "config") 
public final class Cfg { 
    private List<String> avoidanceList; 
    private List<String> ignoreList; 

    private MailConfig mailConfig; 

    @XmlElementWrapper(name = "avoidanceList") 
    @XmlElement(name = "avoid", required = false) 
    public List<String> getAvoidanceList() { 
     return avoidanceList; 
    } 

    @XmlElementWrapper(name = "ignoreList") 
    @XmlElement(name = "ignore", required = false) 
    public List<String> getIgnoreList() { 
     return ignoreList; 
    } 

    @XmlElements({ 
     @XmlElement(name="from", type=String.class), 
     @XmlElement(name="to", type=String.class)}) 
    public MailConfig getMailConfig() { 
     return mailConfig; 
    } 
} 

而這裏MailConfig類:

@XmlRootElement(name = "mailConfig") 
public class MailConfig { 

    private String from; 
    private List<String> toList; 

    public MailConfig(String from, List<String> toList) { 
     this.from = from; 
     this.toList = toList; 
    } 

    @XmlElement(name = "from", required = false) 
    public String getFrom() { 
     return from; 
    } 

    @XmlElementWrapper(name = "toList") 
    @XmlElement(name = "to", required = false) 
    public List<String> getToList() { 
     return toList; 
    } 
} 

這是我第一次來處理XML文件的在Java中,所以我知道代碼也許是completlly錯誤。我還沒有找到解決方案的註釋,所以如果有人可以幫助我,這將是偉大的:)

在此先感謝!

回答

1

試試這個,對我的作品:

@XmlRootElement(name = "config") 
public class Cfg { 
    public Cfg() { 
    } 

    @XmlElementWrapper(name = "avoidanceList") 
    @XmlElement(name = "avoid", required = false) 
    private List<String> avoidanceList; 

    @XmlElementWrapper(name = "ignoreList") 
    @XmlElement(name = "ignore", required = false) 
    private List<String> ignoreList; 

    @XmlElement(name = "mailConfig") 
    private MailConfig mailConfig; 


    public List<String> getAvoidanceList() { 
     return avoidanceList; 
    } 

    public List<String> getIgnoreList() { 
     return ignoreList; 
    } 

    public MailConfig getMailConfig() { 
     return mailConfig; 
    } 
} 

public class MailConfig { 
    @XmlElementWrapper(name = "toList") 
    @XmlElement(name = "to") 
    private List<String> toList; 

    @XmlElement(name = "from", required = false) 
    private String from; 

    public MailConfig() { 
    } 

    public String getFrom() { 
     return from; 
    } 

    public List<String> getToList() { 
     return toList; 
    } 
} 
+0

感謝的人完美的作品! – TheeDudee

相關問題