最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上

下面展示一篇我自己写的一个XML读取测试

import java.util.Iterator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import org.dom4j.*;
import org.dom4j.io.SAXReader; public class XmlRead { static StringBuilder sBuilder = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader bReader = new BufferedReader(new InputStreamReader(
System.in));
String path = null;
System.out.println("请输入XML文件的绝对路径以及文件名:\n");
path = bReader.readLine(); sBuilder.append("开始输出XML文件内容\n"); Document document = null;
try {
document = read(path);
sBuilder.append(path + "\n");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} Element root = getRootElement(document);
if (root == null) {
System.out.print("没有获取到root节点");
return;
}
// 获取XML文档的编码格式
String encString = document.getXMLEncoding();
sBuilder.append("<?xml version=\"1.0\" encoding=\"" + encString
+ "\">\n");
sBuilder.append(elementText(root, attText(root), 0)); System.out.println(getIterator(root, 0) + "</" + root.getName() + ">"); } /**
* 递归节点
*
* @description
* @param element
* @param lvl
* 层级
* @return
*/
private static String getIterator(Element element, int lvl) { lvl += 1; for (Iterator i = element.elementIterator(); i.hasNext();) {
Element e = (Element) i.next();
sBuilder.append(elementText(e, attText(e), lvl));
getIterator(e, lvl); int count = e.nodeCount(); if (count > 0) {
for (int j = 0; j < lvl; j++) {
sBuilder.append(" ");
}
}
sBuilder.append("</" + e.getName() + ">\n");
} return sBuilder.toString();
} /**
* 获取当前节点的属性的值的字符串
*
* @description
* @param element
* 当前节点
* @return
*/
private static String attText(Element element) { String str = " ";
for (int i = 0; i < element.attributeCount(); i++) {
Attribute attribute = element.attribute(i); str += attribute.getName() + "=\"" + attribute.getValue() + "\" ";
}
return str;
} /**
* 获取当前Element的文本值
*
* @description
* @param element
* 当前Element节点
* @param text
* 属性值
* @param lvl
* 层级
* @return
*/
private static String elementText(Element element, String text, int lvl) {
String str = "";
for (int i = 0; i < lvl; i++) {
str += " ";
}
str += "<" + element.getName();
if (text != null && text != "") {
str += text;
}
     //由于dom4j里面没有 hasChild这个属性或者方法,所以要用nodeCount()这个方法来判断时候还有子节点
int count = element.nodeCount();
if (count == 0) {
return str += ">";
}
return str += ">\n";
} /**
*
* @description 读取XML文件
* @param file
* XML文件路径,包含文件名
* @return Document 文档
* @throws MalformedURLException
* @throws DocumentException
*/
public static Document read(String file) throws MalformedURLException,
DocumentException { SAXReader reader = new SAXReader();
Document document = reader.read(new File(file));
return document;
} /**
* 获取Document文档的root节点
*
* @param document
* @return
*/
public static Element getRootElement(Document document) {
return document.getRootElement();
} }

java DOM4J 读取XML的更多相关文章

  1. Java DOM4J读取XML

    DOM4J是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,採用了Java集合框架并全然支持DOM,SAX和JA ...

  2. 深入浅出Java Dom4j读取XML

    在以前自己使用的xml较少,只是了解其很强大,现在可算是在DRP中,真正的开始使用它了,以前只是简单的理解xml,xml即可扩展标记语言,简单的使用,具体是什么?怎么用?还是一直让自己期待的. 首先来 ...

  3. Java使用dom4j读取xml时报错:org.dom4j.DocumentException: Error on line 2 of document : Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence

    1.Java使用dom4j读取xml时报错: org.dom4j.DocumentException: Error on line 2 of document  : Invalid byte 2 of ...

  4. RSS阅读器(一)——dom4j读取xml(opml)文件

    接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习 ...

  5. 使用dom4j 读取XML文件

    第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...

  6. DOM4J读取XML文件

    最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...

  7. java Domj4读取xml文件

    先概括,再以代码形式给出. 获取节点: Iterator  Element.nodeIterator();  //获取当前标签节点下的所有子节点 获取 标签: Element Document.get ...

  8. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  9. 使用dom4j读取xml连接数据库与之单例模式

    使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...

随机推荐

  1. 【SqlServer】empty table and delete table and create table

    1.建表 1 IF object_id (N'表名', N'U') IS NULL CREATE TABLE 表名 ( 2 id INT IDENTITY (1, 1) PRIMARY KEY ,.. ...

  2. Java的Json解析包FastJson使用

    阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser. ...

  3. (一)Netty源码学习笔记之概念解读

    尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6121065.html  博主最近在做网络相关的项目,因此有契机学习netty,先 ...

  4. 判断一个字符串str不为空的方法

    1.str == null; 2."".equals(str); 3.str.length 4.str.isEmpty(); 注意:length是属性,一般集合类对象拥有的属性,取 ...

  5. 【python】with的实现方法

    来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-pythonwith/#icomments 重点: with方法适用于需要分配和清理资 ...

  6. expect

    #!/usr/bin/expect -fset ipaddr "192.168.5.4"set passwd "123qwe"set timeout 30 sp ...

  7. iOS监听tableView组头切换事件

    - (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSIntege ...

  8. NGUI之UIRoot——屏幕的自适应分辨率的计算

    //原来写在其他博客上的东西,搬迁 预备知识: 要明确的三个概念: 设计分辨率:在编辑器上开发UI使用的分辨率.我们所有的UI都是在这个分辨率下设计制作的. 显示区域分辨率:设备上所显示的UI区域在编 ...

  9. html5 websocket 实时日志推送

    http://blog.csdn.net/neutrojan/article/details/46119645

  10. C 标准库系列之概述

    基本上很多编程语言都会提供针对语言本身的一系列的标准库或者包,当然C语言同样也有提供标准库,C语言的标准库是一系列的头文件的集合:如assert.h.ctype.h.errno.h.float.h.l ...