xml源文件如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <memcachesversion="1">
- <memcachetype="AAAA">
- <ip>11.11.1.244:11211</ip>
- <prefix>aaaa_</prefix>
- </memcache>
- <memcachetype="BBBB">
- <ip>11.22.1.243:11211</ip>
- <prefix>bbbb_</prefix>
- </memcache>
- <memcachetype="CCCC">
- <ip>11.33.33.152:11211</ip>
- <prefix>cccc_</prefix>
- </memcache>
- <memcachetype="DDDD">
- <ip>11.44.15.244:11211</ip>
- <prefix>dddd_</prefix>
- </memcache>
- <memcachetype="EEEEEEE">
- <ip>11.66.16.152:11211</ip>
- <prefix>eeeee_</prefix>
- </memcache>
- <memcachetype="FFFFF">
- <ip>11.77.170.152:11211</ip>
- <prefix>fffff_</prefix>
- </memcache>
- </memcaches>
<?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代码:
- importjavax.xml.parsers.DocumentBuilder;
- importjavax.xml.parsers.DocumentBuilderFactory;
- importjava.io.*;//Java基础包,包含各种IO操作
- importjava.util.*;//Java基础包,包含各种标准数据结构操作
- importjavax.xml.parsers.*;//XML解析器接口
- importorg.w3c.dom.*;
- importcom.happyelements.apollo.config.type.AppType;
- importcom.happyelements.apollo.util.ApolloCollectionsUtil;
- publicclassParseMemXML{
- publicstaticfinalMap<String,MemBean>memMap=ApolloCollectionsUtil.newMap();//将MemBean放到map中存放
- //解析xml文件并将得到的实例放入map中
- publicstaticvoidinitXMLFile(Stringfilename)throwsException{
- //为解析xml做准备
- //创建DocumentBuilderFactory实例,指定DocumentBuilder
- DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
- DocumentBuilderdb=null;
- try{
- db=dbf.newDocumentBuilder();
- }catch(ParserConfigurationExceptionpce){
- System.out.println(pce);
- //出异常时输出异常信息,然后退出,下同
- System.exit(1);
- }
- Documentdoc=null;
- try{
- doc=db.parse(filename);
- }catch(DOMExceptiondom){
- System.err.println(dom.getMessage());
- System.exit(1);
- }catch(IOExceptionioe){
- System.err.println(ioe);
- System.exit(1);
- }
- //下面是解析XML的全过程,
- //比较简单,先取根元素"memcaches"
- Elementroot=doc.getDocumentElement();
- //取"memcache"元素列表
- NodeListmemcaches=root.getElementsByTagName_r("memcache");
- for(inti=0;i<memcaches.getLength();i++){
- //创建一个memcache的Bean实例
- MemBeanmemBean=newMemBean();
- //依次取每个"memcache"元素
- Elementmemcache=(Element)memcaches.item(i);
- //取memcache的type属性
- memBean.setType(memcache.getAttribute("type"));
- //取"ip"元素,下面类同
- NodeListips=memcache.getElementsByTagName_r("ip");
- if(ips.getLength()==1){
- Elemente=(Element)ips.item(0);
- Textt=(Text)e.getFirstChild();
- memBean.setIp(t.getNodeValue());
- System.out.println(memBean.getIp());
- }
- NodeListprefixs=memcache.getElementsByTagName_r("prefix");
- if(prefixs.getLength()==1){
- Elemente=(Element)prefixs.item(0);
- Textt=(Text)e.getFirstChild();
- memBean.setPrefix(t.getNodeValue());
- System.out.println(memBean.getPrefix());
- }
- memMap.put(memBean.getType().toString(),memBean);
- }
- }
- publicstaticvoidmain(String[]args)throwsException{
- ParseMemXML.initXMLFile("E:\\workplace\\Tool2\\WebRoot\\WEB-INF\\memconf.xml");
- System.out.println(ParseMemXML.memMap.size());
- MemBeanmemBean=ParseMemXML.memMap.get(AppType.AAAA.toString());
- System.out.println("ip====="+memBean.getIp());
- System.out.println("prefix==="+memBean.getPrefix());
- }
- }
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_r("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_r("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_r("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源文件
- importjava.io.Serializable;
- importorg.simpleframework.xml.Attribute;
- importorg.simpleframework.xml.Element;
- importorg.simpleframework.xml.Root;
- @Root(name="memconf")
- publicclassMemBeanimplementsSerializable{
- privatestaticfinallongserialVersionUID=2209681159359089305L;
- @Attribute
- privateStringtype;
- @Element
- privateStringip;
- @Element
- privateStringprefix;
- publicStringgetType(){
- returntype;
- }
- publicvoidsetType(Stringtype){
- this.type=type;
- }
- publicStringgetIp(){
- returnip;
- }
- publicvoidsetIp(Stringip){
- this.ip=ip;
- }
- publicStringgetPrefix(){
- returnprefix;
- }
- publicvoidsetPrefix(Stringprefix){
- this.prefix=prefix;
- }
- }
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源文件