解析XML文件信息
来源:互联网 发布:伊修巴尔歼灭战 知乎 编辑:程序博客网 时间:2024/06/17 18:29
1. 说明
在项目中,我们需要将一些可能会变动的信息配置在一份XML的文件中。这样,即时信息变动了也不需要修改代码,只要修改配置文件就行了。比如,我们在创建线程池时,我们会将创建线程池需要的corePoolSize、maxinumPoolSize、keepAliveTime等参数配置到指定的配置文件中,这样对于不同的项目,我们可以选用不同的参数。所以,本次的博客笔者主要向大家介绍如何解析一份XML的文件。
2. JDOM介绍
Jdom是使用XML的java工具包,我们经常会用它来解析XML的文件,给我们的开发带来的一定的方便。在开发过程中,我们经常用使用SAXBuild,这个是一个解析器。我们创建一个JDOM文档时,实际上就是作SAX解析来解析的。所以我们会用到SAXBuild的build函数来处理文件。Build函数处理后的返回一个Document的对象,也就是XML的文件。之后,我们就可以通过Document的getRootElement的函数来获取根节点,再通过getChildren函数获取子节点。如果有多个子节点,就可将当前子节点作为根节点,以此类推。
3. 代码
** * 解析XML的文件,将解析的信息存在到Map中,随时都可以获取 * * @author OwenWilliam * @Date 2017-4-19 * */public class ResolveXML{@SuppressWarnings("unchecked")public static HashMap<Object, HashMap<Object, Object>> getXMLInfo(String fileName){if (fileName != null){try{SAXBuilder saxbuilder = new SAXBuilder();// 解析器Document document = saxbuilder.build(new FileInputStream(fileName));// 处理文件Element element = document.getRootElement();// 根节点 </configs>List<Object> list = element.getChildren();// 子节点 </config>HashMap<Object, HashMap<Object, Object>> resultMap = new HashMap<Object, HashMap<Object, Object>>();// 存放最终结果for (int i = 0; i < list.size(); i++){Element element2 = (Element) list.get(i);// 将这个</config>子节点当作根节点List<Object> list2 = element2.getChildren();// 子节点</item>if ((list2 == null) || (list2.size() <= 0))continue;HashMap<Object, Object> map = new HashMap<Object, Object>();for (int j = 0; j < list2.size(); j++){Element localElement3 = (Element) list2.get(j);String id = localElement3.getAttribute("id").getValue();// 获取id值map.put(id, localElement3.getText());// 标签中的内容resultMap.put(element2.getAttribute("id").getValue(), map);//对应的</config>标签id}}return resultMap;} catch (Exception localException){localException.printStackTrace();}}return null;}public static void main(String[] args){String fileName = System.getProperty("user.dir")+ "/config/userInfo.xml";HashMap<Object, HashMap<Object, Object>> info = getXMLInfo(fileName);HashMap<Object, Object> userInfo = (HashMap<Object, Object>) info.get("userInfo");System.out.println(userInfo.get("Owen"));System.out.println(userInfo.get("Rubby"));System.out.println(userInfo.get("Hanks"));}}
源码地址:git@github.com:owenwilliam/BuilderXML.git
0 0
- 解析XML文件信息
- java解析xml文件获取xml里面的信息
- 用DOM4j解析xml文件,获得所有节点信息
- 使用DOM解析器得到xml文件中的信息
- 解析XML文件,并将信息显示在窗体上
- 读取XML文件信息
- Dom4j解析XML文件,处理来至XML的数据信息
- 读取XML文档解析信息
- XML----SAX解析XML文件
- XML---DOM4J解析XML文件
- XML DOM解析XML文件
- XML SAX解析xml文件
- XML jDOM解析XML文件
- XML DOM4J解析XML文件
- 解析XML文件___SAX解析
- java 解析 xml文件
- XML文件解析
- XML文件解析
- 【计算机视觉】摄像机标定2 原理篇
- 绕过验证码,使用chrome的已存在的cookie访问网站
- Ubuntu14.04系统下无法连接Wi-Fi无线网以及安装BCM43142网卡驱动的解决方案
- java并发编程实践之线程安全性
- Copy List with Random Pointer
- 解析XML文件信息
- 偶遇深圳图书馆
- 【EasyUI】初识之Datagrid(一)
- myeclipse 10配置jboss 7.1.1无法启动Error: Could not create the Java Virtual Machine
- [leetcode]Add Two Numbers
- MapReduce执行过程中的数据流程:
- printf/sprintf/fprintf
- Linux之文件备份--cp
- 简单理解Socket及TCP/IP、Http、Socket的区别