锁定老帖子 主题:读取xml文件
精华帖 (0) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-16
<?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源文件 public enum AppType { AAAA, BBBB, CCCC, DDDD, EEEE, FFFF, ; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-16
hey 难得啊 烟台的姐们呵呵
|
|
返回顶楼 | |
发表时间:2010-12-16
唉 从此贴可见又要有实习的了
|
|
返回顶楼 | |
发表时间:2010-12-16
apple307878412 写道 hey 难得啊 烟台的姐们呵呵
头像为女生的未必是真正的女人,都是浮云啊! |
|
返回顶楼 | |
发表时间:2010-12-16
呵呵 此贴很快就会被评为新手帖了
|
|
返回顶楼 | |
发表时间:2010-12-17
这是通过那种方式来读xml文件?
|
|
返回顶楼 | |
发表时间:2010-12-17
刚看了一下jdk才知道了Java解析xml,嘿嘿。学习了
非常感谢 |
|
返回顶楼 | |
发表时间:2010-12-17
建议楼主使用xpath在做一次,然后总结下。
|
|
返回顶楼 | |
发表时间:2010-12-17
呵呵。。用的xml还是memcached的配置文件,哈哈。
|
|
返回顶楼 | |
发表时间:2010-12-17
dom4j才是最好的xml解析工具
|
|
返回顶楼 | |