dom4j 解析xml

来源:互联网 发布:淘宝卖家改价要收费吗 编辑:程序博客网 时间:2024/06/18 13:45
package common.utils;


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


/**
 * xml 解析工具类 返回list集合
 * 使用jar包为 dom4j-2.1.0.jar
 * @author Administrator
 *
 */
public class AnalysisXmlUtil {

private List<Object> xmllist = new ArrayList<>();

public static void main(String[] args) {

try {
AnalysisXmlUtil a = new AnalysisXmlUtil();
a.ReadXml("D:\\LocList.xml");
List<Object> l = a.xmllist;
System.out.println(l.get(1));
System.out.println(l.size());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 读取xml文件
* @param filepath 文件路径
* @throws Exception
*/
public void ReadXml(String filepath) throws Exception {


// 创建saxreader对象
SAXReader reader = new SAXReader();
// 读取一个文件,把这个文件转换成Document对象
Document document = reader.read(new File(filepath));
// 获取根元素
Element root = document.getRootElement();
listNodes(root);
// 把文档转换字符串
/*
* String docXmlText = document.asXML(); System.out.println(docXmlText);
* System.out.println("---------------------------"); // csdn元素标签根转换的内容
* String rootXmlText = root.asXML(); System.out.println(rootXmlText);
* System.out.println("---------------------------");
*/
// 获取java元素标签 内的内容
/*
* Element e = root.element("CountryRegion");
* System.out.println(e.asXML());
*/


}


/**
* 创建一个document对象 往document对象中添加节点元素 转存为xml文件

* @throws Exception
*/
public void WriteXml() throws Exception {


Document document = DocumentHelper.createDocument();// 创建根节点
Element root = document.addElement("csdn");
Element java = root.addElement("java");
java.setText("java");
Element ios = root.addElement("ios");
ios.setText("ios");


writerNewFile(document);
}


/**
* 把一个文本字符串转换Document对象

* @throws Exception
*/
public void StringToDocument() throws Exception {
String text = "<csdn><java>Java</java><net>Net</net></csdn>";
Document document = DocumentHelper.parseText(text);
Element e = document.getRootElement();
System.out.println(e.getName());
writerNewFile(document);
}


/**
* 把document对象写入新的文件

* @param document
* @throws Exception
*/
public void writerNewFile(Document document) throws Exception {
// 紧凑的格式
// OutputFormat format = OutputFormat.createCompactFormat();
// 排版缩进的格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码
format.setEncoding("UTF-8");
// 创建XMLWriter对象,指定了写出文件及编码格式
// XMLWriter writer = new XMLWriter(new FileWriter(new
// File("src//a.xml")),format);
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File("src//c.xml")), "UTF-8"),
format);
// 写入
writer.write(document);
// 立即写入
writer.flush();
// 关闭操作
writer.close();
}

/**
* 遍历所有xml节点
* @param node
*/
public void listNodes(Element node) {
String s = node.getName();
// System.out.println("当前节点的名称:" +s);
// 首先获取当前节点的所有属性节点
s = "nodeName=" + s;
List<Attribute> list = node.attributes();
// 遍历属性节点
String t = "";
for (Attribute attribute : list) {
// System.out.println("属性" + attribute.getName() + ":" +
// attribute.getValue());
t += "," + attribute.getName() + "=" + attribute.getValue();
}
// 如果当前节点内容不为空,则输出
if (!(node.getTextTrim().equals(""))) {
System.out.println(node.getName() + ":" + node.getText());
t = ",value=" + node.getText();
}
// xmllist.add(s);
xmllist.add(s + t);
// 同时迭代当前节点下面的所有子节点
// 使用递归
Iterator<Element> iterator = node.elementIterator();
while (iterator.hasNext()) {
Element e = iterator.next();
listNodes(e);
}
}
}
原创粉丝点击