解析XML文件信息

17 篇文章 0 订阅

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值