/** * 读取配置的xml文件。 */ public class TestBoundXml { private static Map<String, OutBound> outBoundMap = new HashMap<String, OutBound>(); private static Integer connectTime; static { int temp; StringBuffer stringBuffer = new StringBuffer(); InputStream inputStream = TestBoundXml.class.getResourceAsStream("/OutBound.xml"); InputStreamReader inputStreamReader = new InputStreamReader(inputStream); try { while ((temp = inputStreamReader.read()) != -1) { stringBuffer.append((char) temp); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputStreamReader.close(); } catch (IOException e) { e.printStackTrace(); } } OutBoundRoot outBoundRoot = convertToJavaBean(stringBuffer.toString(), OutBoundRoot.class); connectTime = outBoundRoot.getConnectTime(); for (OutBound outbound : outBoundRoot.getOutBoundList()) { outBoundMap.put(outbound.getName(), outbound); } } //XML转javabean public static <T> T convertToJavaBean(String xml, Class<T> clazz) { T t = null; try { JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.createUnmarshaller(); t = (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (JAXBException e) { e.printStackTrace(); } return t; } public static Integer getConnectTime(){ return connectTime; } //根据name来读取相关的xml配置 public static OutBound getOutBound(String name){ return outBoundMap.get(name); } }
//和xml中的Root标签文件对应 @XmlRootElement(name = "Root") public class OutBoundRoot { private List<OutBound> outBoundList; private Integer connectTime; @XmlElement(name = "OutBound") public List<OutBound> getOutBoundList() { return outBoundList; } public void setOutBoundList(List<OutBound> outBoundList) { this.outBoundList = outBoundList; } @XmlElement(name = "ConnectTimeout") public Integer getConnectTime() { return connectTime; } public void setConnectTime(Integer connectTime) { this.connectTime = connectTime; } }
//和xml中的OutBound标签文件对应 @XmlRootElement public class OutBound { private String name; private String dataType; @XmlElement(name = "Name") public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement(name = "DataType") public String getDataType() { return dataType; } public void setDataType(String dataType) { this.dataType = dataType; } }
//自定义的xml配置,可以配置成列表 <?xml version="1.0" encoding="UTF-8"?> <Root> <ConnectTimeout>60000</ConnectTimeout> <OutBound> <Name>zhangsan</Name> <DataType>xml</DataType> </OutBound> <OutBound> <Name>lisi</Name> <DataType>xml</DataType> </OutBound> </Root>