手机
当前位置:查字典教程网 >编程开发 >Java >java DOM4J 读取XML实例代码
java DOM4J 读取XML实例代码
摘要:下面展示一篇我自己写的一个XML读取测试复制代码代码如下:importjava.util.Iterator;importjava.io.Bu...

下面展示一篇我自己写的一个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读取word-excel-ppt文件代码

Java自动解压文件实例代码

Java线程优先级示例代码

Java Annotation(Java 注解)的实现代码

java时间戳转日期格式的实现代码

Java创建文件夹及文件实例代码

java 发送邮件的实例代码(可移植)

java与js代码互调示例代码

java多线程复制文件的实例代码

java HashMap的keyset实例

精品推荐
分类导航