现有一个配置文件,需要解析出根节点与子节点,还有子节点下属性的信息。虽然w3c.dom规范亦可以解析,但这儿我们尝试使用dom4j的方式来解析。

涉及到的jar包有dom4j-1.6.1.jar

xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="computer" class="org.crazyit.app.main.Computer">
<property name="name" value="孙悟空的智慧型手机" />
<property name="out" ref="betterPrinter" />
</bean>
<bean id="printer" class="org.crazyit.app.inter.impl.Printer" />
<bean id="betterPrinter" class="org.crazyit.app.inter.impl.BetterPrinter" />
<bean id="now" class="java.util.Date" scope="prototype" />
</beans>

解析xml配置文件的java类:

SAXReader reader = new SAXReader();
Document doc = reader.read(new File(filePath));
//得到根节点
Element root = doc.getRootElement();
//遍历根节点下的子节点(同样也可以遍历某个含子节点的子节点)
for(Object obj : root.elements()) {
Element ele = (Element) obj;
//获取子节点的属性
String beanId = ele.attributeValue("id");
String beanClazz = ele.attributeValue("class");
String beanScope = ele.attributeValue("scope");
}

解析xml格式的字符串:

Map map = new HashMap();
StringReader reader = new StringReader(msg);
InputSource source = new InputSource(reader);
SAXReader sr = new SAXReader();
Document doc = sr.read(source);
//得到Document之后,下面的步骤就跟上面解析xml文件的步骤一致

但如果是一般的类型:如html那种配置文件(即不是这种Spring的xml),解析的语法又有不同,如:

 Map map = new HashMap();
Document doc = null;
try {
doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
Iterator iter = rootElt.elementIterator("head"); // 获取根节点下的子节点head
// 遍历head节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
String title = recordEle.elementTextTrim("title"); // 拿到head节点下的子节点title值
System.out.println("title:" + title);
map.put("title", title);
Iterator iters = recordEle.elementIterator("script"); // 获取子节点head下的子节点script
// 遍历Header节点下的Response节点(如果子节点下又有子节点的话,继续遍历)
Iterator iterss = rootElt.elementIterator("body"); ///获取根节点下的子节点body
// 遍历body节点
while (iterss.hasNext()) {
Element recordEless = (Element) iterss.next();
String result = recordEless.elementTextTrim("result"); // 拿到body节点下的子节点result值
System.out.println("result:" + result);
Iterator itersElIterator = recordEless.elementIterator("form"); // 获取子节点body下的子节点from
// 遍历body节点下的from节点
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}

使用dom4j来解析xml文件或xml字符串相关推荐

  1. python解析xml文件elementtree_Python XML解析之ElementTree

    参考网址: 菜鸟教程提供了基本的XML编程接口DOM.SAX,以及轻量级ElementTree的简易概念说明和一些示例.DOM是一种跨语言的XML解析机制,通过将整个XML在内存中解析为一个树来操作, ...

  2. 创建带有关联的 XML 架构的 XML 文件 从 XML 文件创建 XML 架构

    一.创建带有关联的XML 架构的XML 文件 1.创建新的 Windows 应用程序项目 首先需要在 Visual Basic 或 Visual C# 中创建新的 Windows 应用程序.创建一个新 ...

  3. php操作xml文件,php xml文件操作代码(一)

    创建SimpleXML对象 学习操作xml的朋友可以看看. example.xml文件: $xml = simplexml_load_file('example.xml'); //创建SimpleXM ...

  4. 【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )

    文章目录 一.创建 XmlParser 解析器 二.获取 Xml 文件中的节点 三.获取 Xml 文件中的节点属性 四.完整代码示例 一.创建 XmlParser 解析器 创建 XmlParser 解 ...

  5. SAX 解析XML文件:将XML转换成Java对象

    本博客介绍的是解析本地XML文件,解析网络上的XML 本文写得比较简略,实际上项目应用更多的是解析网上的xml资源 使用SAX 处理XML需要一个Handler 对象,一般继承org.xml.sax, ...

  6. tinyxml2 数组_7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml...

     数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...

  7. JS解析XML文件和XML字符串

    http://www.cnblogs.com/chjw8016/archive/2011/07/12/2104269.html JS解析XML字符串 <script type='text/jav ...

  8. 使用DMO遍历xml文件(将xml文件中要获取的内容存到ArrayList集合中再取出来)(DMO解析)

    以下是我要将xml文件中要获取的内容存到ArrayList集合中再取出来的代码,大家也可以不用弄到集合去,我弄到集合也是为了好玩而已,哈哈... import java.io.IOException; ...

  9. Java生成XML文件与XML文件的写入

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html  既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了. 与解析X ...

最新文章

  1. 不追逐标准化产品,360数科的一站式风控体系有何不同?
  2. infer的用法_typescript高级用法之infer的理解与使用
  3. jieba分词_自然语言NLP必备(1),jieba工具 5 行代码对整篇文章分词
  4. Shader Compiler 界面进展2
  5. pytorch 之 torch.eye()函数
  6. 电商首页设计的时候,就应该考虑这个
  7. 2017.9.8 字符串 失败总结
  8. 使用 Python+Selenium + 第三方库实现的简单的 web 自动化测试框架 源码
  9. 解决360N4S骁龙版在国外使用碰到的问题,附详细root教程
  10. 检测服务器网站端口,检测服务器80端口
  11. 计算机宏如何设置方法,excel 如何启用宏的方法,以及如何设置excel启用宏
  12. ice 3.6 java_Ice的安装与入门实验(超详细)
  13. 免费可用的Android手机传感器数据采集程序(附程序)
  14. 二维条码防伪技术原理及应用简介
  15. nodejs ---- 起步
  16. android 从服务端获取的图片怎么适配不同分屏幕的手机,移动端的适配|切图|标注...
  17. 新媒体数据分析:新媒体运营主要做什么?
  18. R语言实现关联规则与推荐算法(学习笔记)
  19. c语言switch例题考试成绩,使用C语言switch语句根据考试成绩等级输出百分制的分数段,规定如下: A:85~100 B:70~84 C:60~69 D:60...
  20. 人工智能如何与教育结合,人工智能对教育的影响

热门文章

  1. 【Mac版word转PPT技巧】谁说Word转PPT在Mac电脑中不能实现?
  2. 3Dmax建模教程详细步骤3D建模速成入门到高级教程
  3. Nginx启动报错: could not open error log file: open() q unable to find local peer: 192.168.10.102:8848,
  4. 期刊影响因子的中外算法差别很大
  5. 360 mysql无法启动_mysql无法启动
  6. 如何利用python求导数(微分)和积分
  7. 背着房贷被裁员是一种什么样的体验?
  8. P2837 [USACO08FEB]Dining Cows B 题解
  9. 【高等数学笔记】曲面积分的计算
  10. 《快速像素(Quixel)》游戏“破解”攻略