Java是如何来读取XML文件里的内容的

admin 2014年12月26日 Java学习 1220次阅读 查看评论

  这里用实例来解释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,

  ;

  }

« 上一篇 下一篇 » admin原创文章,转载请注明出处! 标签:javaxml

相关日志:

«   2019年11月   »
123
45678910
11121314151617
18192021222324
252627282930
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
文章归档
网站收藏
友情链接
图标汇集
  • 又拍云
  • 订阅ipvb的RSS 2.0聚合