当前位置:首页 » JAVA技术教程

使用Java读取XML文件中的内容

2011-05-10 15:46 本站整理 浏览(8743)

这里用实例来解释Java是如何来读取XML文件里的内容的。在使用Java读取XML文件内容前我们必须得有一个供读取的XML文件。
XML文件代码如下:

<?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,


;
}