<?xml version="1.0" encoding="UTF-8"?> <memcaches version="1"> <memcache type="AAAA"> <ip>11.11.1.244:11211</ip> <prefix>aaaa_</prefix> </memcache> <memcache type="BBBB"> <ip>11.22.1.243:11211</ip> <prefix>bbbb_</prefix> </memcache> <memcache type="CCCC"> <ip>11.33.33.152:11211</ip> <prefix>cccc_</prefix> </memcache> <memcache type="DDDD"> <ip>11.44.15.244:11211</ip> <prefix>dddd_</prefix> </memcache> <memcache type="EEEEEEE"> <ip>11.66.16.152:11211</ip> <prefix>eeeee_</prefix> </memcache> <memcache type="FFFFF"> <ip>11.77.170.152:11211</ip> <prefix>fffff_</prefix> </memcache> </memcaches>
解析上面xml文件的java代码:
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.*; //Java基础包,包含各种IO操作 import java.util.*; //Java基础包,包含各种标准数据结构操作 import javax.xml.parsers.*; //XML解析器接口 import org.w3c.dom.*; import com.happyelements.apollo.config.type.AppType; import com.happyelements.apollo.util.ApolloCollectionsUtil; public class ParseMemXML { public static final Map<String, MemBean> memMap = ApolloCollectionsUtil.newMap();//将MemBean放到map中存放 //解析xml文件并将得到的实例放入map中 public static void initXMLFile(String filename) throws Exception { // 为解析xml做准备 // 创建DocumentBuilderFactory实例,指定DocumentBuilder DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { System.out.println(pce); // 出异常时输出异常信息,然后退出,下同 System.exit(1); } Document doc = null; try { doc = db.parse(filename); } catch (DOMException dom) { System.err.println(dom.getMessage()); System.exit(1); } catch (IOException ioe) { System.err.println(ioe); System.exit(1); } // 下面是解析XML的全过程, // 比较简单,先取根元素"memcaches" Element root = doc.getDocumentElement(); // 取"memcache"元素列表 NodeList memcaches = root.getElementsByTagName("memcache"); for (int i = 0; i < memcaches.getLength(); i++) { // 创建一个memcache的Bean实例 MemBean memBean = new MemBean(); // 依次取每个"memcache"元素 Element memcache = (Element) memcaches.item(i); // 取memcache的type属性 memBean.setType(memcache.getAttribute("type")); // 取"ip"元素,下面类同 NodeList ips = memcache.getElementsByTagName("ip"); if (ips.getLength() == 1) { Element e = (Element) ips.item(0); Text t = (Text) e.getFirstChild(); memBean.setIp(t.getNodeValue()); System.out.println(memBean.getIp()); } NodeList prefixs = memcache.getElementsByTagName("prefix"); if (prefixs.getLength() == 1) { Element e = (Element) prefixs.item(0); Text t = (Text) e.getFirstChild(); memBean.setPrefix(t.getNodeValue()); System.out.println(memBean.getPrefix()); } memMap.put(memBean.getType().toString(), memBean); } } public static void main(String[] args) throws Exception { ParseMemXML.initXMLFile("E:\\workplace\\Tool2\\WebRoot\\WEB-INF\\memconf.xml"); System.out.println(ParseMemXML.memMap.size()); MemBean memBean = ParseMemXML.memMap.get(AppType.AAAA.toString()); System.out.println("ip=====" + memBean.getIp()); System.out.println("prefix===" + memBean.getPrefix()); } }
MemBean的java源文件
import java.io.Serializable; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.Root; @Root(name = "memconf") public class MemBean implements Serializable { private static final long serialVersionUID = 2209681159359089305L; @Attribute private String type; @Element private String ip; @Element private String prefix; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } }
AppType源文件