product.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<product>
<index id="1">交换机</index>
<index id="2">传送网</index>
<index id="3">WLAN</index>
<index id="4">路由器</index>
</product> <scene>
<index id="1">规划</index>
<index id="2">实施</index>
<index id="3">维护</index>
</scene>
</root>

代码:

package com.cy.test;

import java.io.File;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class ReadXmlFile {
public static void main(String[] args) throws Exception{
String path = URLDecoder.decode(ReadXmlFile.class.getClassLoader().getResource("").getPath(), "UTF-8") + "product.xml"; SAXReader reader = new SAXReader();
Document document = reader.read(new File(path)); //获取文档的根节点
Element root = document.getRootElement(); //获取product的节点
Element element = root.element("product");
List<Element> proList = element.elements();
for(Element e: proList){
String value = e.getTextTrim();
Attribute attr = e.attribute("id");
String key = attr.getValue();
System.out.println("key:" + key + "--value:" +value);
} //获取scene节点
Element sElement = root.element("scene");
List<Element> sList = sElement.elements();
for(Element e : sList){
String value = e.getTextTrim();
String key = e.attributeValue("id");
System.out.println("key:" + key + "----value:" + value);
} //将xml转化为map
Map<Integer, String> prodcutMap = xml2Map(path);
for (Map.Entry<Integer, String> entry : prodcutMap.entrySet()) {
System.out.println("键= " + entry.getKey() + " and 值= " + entry.getValue());
}
} //将xml转化为map
public static Map<Integer, String> xml2Map(String path) throws Exception{
Map<Integer, String> productMap = new HashMap<Integer, String>();
Document document = new SAXReader().read(path);
Element root = document.getRootElement(); //获取根节点
Iterator<Element> it = root.element("product").elementIterator(); //获取根节点下的子节点product下面的所有节点
while(it.hasNext()){
Element e = (Element) it.next();
Integer key = Integer.parseInt(e.attributeValue("id"));
String value = e.getTextTrim();
productMap.put(key, value);
} return productMap;
}
}

//可以将上面xml2Map改装,传入节点名字,nodeName,然后输出map

console:

dom4j使用的小例子的更多相关文章

  1. Dom4j的一个小例子,用于解析xml文件的元素获取方式(转)

    import java.io.File; import java.io.IOException; import javax.xml.parsers.ParserConfigurationExcepti ...

  2. Dom4j的一个小例子,用于解析xml文件的元素获取方式

    import java.io.File; import java.io.IOException; import javax.xml.parsers.ParserConfigurationExcepti ...

  3. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  4. Spring和Hibernate结合的一个小例子

    1.新建一个SpringHibernate的maven项目 2.pom文件的依赖为 <dependency> <groupId>junit</groupId> &l ...

  5. springmvc入门的第一个小例子

    今天我们探讨一下springmvc,由于是初学,所以简单的了解一下 springmvc的流程,后续会持续更新... 由一个小例子来简单的了解一下 springmvc springmvc是spring框 ...

  6. java即时通信小例子

    学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...

  7. Runtime的几个小例子(含Demo)

    一.什么是runtime(也就是所谓的“运行时”,因为是在运行时实现的.)           1.runtime是一套底层的c语言API(包括很多强大实用的c语言类型,c语言函数);  [runti ...

  8. bootstrap 模态 modal 小例子

    bootstrap 模态 modal  小例子 <html> <head> <meta charset="utf-8" /> <title ...

  9. INI配置文件分析小例子

    随手写个解析INI配置字符串的小例子 带测试 #include <iostream> #include <map> #include <string> #inclu ...

随机推荐

  1. 十三、dbms_flashback(用于激活或禁止会话的flashback特征)

    1.概述 作用:用于激活或禁止会话的flashback特征,为了使得普通用户可以使用该包,必须要将执行该包的权限授予这些用户,grant execute on dbms_flashback to sc ...

  2. bzoj3623

    题解: 刚看到题目,还以为是2-sat 可是似乎不对啊... 然后就只能爆搜了 看了网上的题解,woc还真是报搜 然后就ac了 当然爆搜还要随机化 代码: #include<bits/stdc+ ...

  3. iOS支付宝SDK回调那坑

    支付宝钱包支付接口开发包2.0标准版(iOS 2.2.1) ,回调不出来,demo给出的方法是: - (BOOL)application:(UIApplication *)application op ...

  4. 《Effective C++》第8章 定制new和delete-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  5. cursor游标(mysql)

    /* 游标 cursor 什么是游标?为什么需要游标 使用存储过程对sql进行编程的时候,我们查询的语句可能是数据是多个,它总是一口气全部执行,我们无法针对每一条进行判断.也就是说,我们无法控制程序的 ...

  6. C++11_ Lambda

    版权声明:本文为博主原创文章,未经博主允许不得转载. 这次主要介绍C++11的Lambda语法,一个非常给力的语法 1.组成 : [...导入符号](...参数)mutable(可改写)  throw ...

  7. Linux驱动入门——构建和运行模块

    Hello world模块 本文介绍如何向内核中添加一个hello模块.该模块的功能是在模块加载时,向系统日志输出"hello world\n" 在模块卸载时输出"Goo ...

  8. Python中字符的练习

    一.重复的单词:此处认为分隔符为空格:个整数-]): list.append(random.randint(, ))for i in list: d[i]=list.count(i)print d

  9. SpringMVC札集(06)——转发和重定向

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  10. python删除list中元素的三种方法

    a.pop(index):删除列表a中index处的值,并且返回这个值. del(a[index]):删除列表a中index处的值,无返回值. del中的index可以是切片,所以可以实现批量删除. ...