You should get a point of how to use JAXB after reading through this code.
<jawabotConfig> <settings verbose = "true" unsecuredShutdown = "false" acceptInvitation = "true" messageDelay = "1000" leaveOnAsk = "true" adminUser = "ozizka" smtpHost = "smtp.somewhere.com" announceEmailTo = "announce@somewhere.com" announceEmailFrom = "jawabot-no-reply@somewhere.com" announceDefaultChannel = "#jboss" debugChannel = "#some" /> <irc> <defaultNick>JawaBot-beta</defaultNick> <defaultNick2>JawaBot-beta_</defaultNick2> <server host="irc.freenode.net"> <autoJoinChannels> #richfaces #jboss </autoJoinChannels> </server> </irc> <resources> <resource name="jawa01" note="EAP"/> <resource name="jawa02" note="EAP"/> </resources> <resourceGroups> <group name="brno" channel="#brno" mail="jboss@somewhere.com"> jawa01 jawa02 ...</group> <group name="openjdk">jawa16 jawa28 jawa29</group> </resourceGroups> <userGroups> <group name="eap">ozizka rhusar pslavice istudens</group> <group name="openjdk">ptisnovs</group> </userGroups> </jawabotConfig>
@XmlRootElement(name="jawabotConfig") public class ConfigBean { @XmlElement public SettingsBean settings; @XmlElement public IrcBean irc; @XmlElementWrapper(name="resources") @XmlElement(name="resource") public List<Resource> resources; public List<Resource> getResources() { return resources; } @XmlElement public ResourceGroupsBean resourceGroups; @XmlElement public UserGroupsBean userGroups; }// class
<settings>
, <irc>
,
<resourceGroups>
public class SettingsBean { @XmlAttribute public boolean verbose = true; @XmlAttribute public boolean acceptInvitation = true; @XmlAttribute public int messageDelay = 666; @XmlAttribute public boolean leaveOnAsk = true; @XmlAttribute public String adminUser = "ozizka"; @XmlAttribute public String smtpHost = "..."; @XmlAttribute public String announceEmailTo = "..."; @XmlAttribute public String announceEmailFrom = "..."; @XmlAttribute public String announceDefaultChannel = "#jboss"; @XmlAttribute public String debugChannel = "#some"; @XmlAttribute public boolean unsecuredShutdown = false; }// class
public class IrcBean implements Serializable { @XmlElement public String defaultNick; @XmlElement(name="server") public List<ServerBean> servers; }// class
public class ServerBean { @XmlAttribute public String host; @XmlAttribute public Integer port; @XmlElement @XmlList public List<String> autoJoinChannels; }// class
public class ResourceGroupsBean implements Serializable { /* <resourceGroups> <group name="soa">jawa01 jawa02 jawa03</group> <group name="embjopr">jawa18</group> </resourceGroups> */ @XmlElement(name="group") List<ResourceGroupBean> groups; }// class
String filePath = "myFile.xml" InputStream is = JawaBot.class.getClassLoader().getResourceAsStream(filePath); InputStreamReader reader = new InputStreamReader( is ); JAXBContext jc = JAXBContext.newInstance( ConfigBean.class ); Unmarshaller mc = jc.createUnmarshaller(); ConfigBean config = (ConfigBean) mc.unmarshal(reader);