java DOM4J 读取XML
最近学习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的更多相关文章
- Java DOM4J读取XML
DOM4J是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,採用了Java集合框架并全然支持DOM,SAX和JA ...
- 深入浅出Java Dom4j读取XML
在以前自己使用的xml较少,只是了解其很强大,现在可算是在DRP中,真正的开始使用它了,以前只是简单的理解xml,xml即可扩展标记语言,简单的使用,具体是什么?怎么用?还是一直让自己期待的. 首先来 ...
- 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 ...
- RSS阅读器(一)——dom4j读取xml(opml)文件
接触java不久,偶有收获,最近想做一个web版RSS阅读器来锻炼一下.手头有几个从不同版本的foxmail中导出的opml文件,大家应该都知道,opml文件就是xml格式的.那么就先从这里入手,练习 ...
- 使用dom4j 读取XML文件
第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...
- DOM4J读取XML文件
最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...
- java Domj4读取xml文件
先概括,再以代码形式给出. 获取节点: Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点 获取 标签: Element Document.get ...
- 【XML】利用Dom4j读取XML文档以及写入XML文档
Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...
- 使用dom4j读取xml连接数据库与之单例模式
使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...
随机推荐
- 【Android自学日记】【转】Android Fragment 真正的完全解析(上)
自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~ 本篇博客力求为大家说明Fragment如何产 ...
- angularJS select
ng-options指令 在angularJS中创建select下拉是使用ng-options创建下拉项 ng-options="val as label for element in ar ...
- JAVA基础学习——1.1 环境搭建 之jdk安装,环境变量配置 (系统Win10,64bit)
大学里虽然老师教过JAVA,但我没学.后来工作了,断断续续的也碰到了JAVA的项目,都是拉过来就干的节奏.也没有好好系统的学习一下. 从今天开始系统学习整理一下JAVA,以后再碰到JAVA项目的时候, ...
- mkdir命令
[mkdir] 创建目录 mkdir ===make directory 命令格式: mkdir [OPTION]... DIRECTORY 命令功能: 通过 mkdir 命令可以实现在指 ...
- java的关闭钩子(Shutdown Hook)
Runtime.getRuntime().addShutdownHook(shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jv ...
- ORA-01502: index 'INDEX_NAME' or partition of such index is in unusable state
ORA-01502: index 'INDEX_NAME' or partition of such index is in unusable state 原因: 这个错误一般是因为索引状态为UNUS ...
- 基于SS5服务端的Socks5客户端
SS5停止更新已经好几年了,用作socks5代理的服务端还是比较稳定的.但是如果要使用加密账号和密码的协议,有些坑需要去填. 1.服务端的账号密码验证方式配置为“s”时,客户端进行协议验证时,需要用“ ...
- Android 获得AndroidManifest文件里自定义的meta标签内容
try { ApplicationInfo appInfo= this.getPackageManager().getApplicationInfo(getPackageName(),PackageM ...
- iOS版本更新在APP中直接访问AppStore
1.导入框架 #import <StoreKit/StoreKit.h> 2.添加代理 <SKStoreProductViewControllerDelegate> 3.设置跳 ...
- oracle11g interval(numtoyminterval())自动创建表分区
Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不 ...