对于dom4j我是在今年暑假接触的.今天我想把xml文件解析成JAVA对象.
1、下载dom4j-1.6.1.jar包。
2、新建一工程web。在WebContent目录下创建users.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<root>
<users>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
</users>
</root>
3、创建一个Bean——ElementNode.java
package com.test.learn_xml.dto;
import org.dom4j.Element;
public class ElementNode
{
private Element element;
private String id;//唯一标示符
private String parentId;//父节点ID
public Element getElement() {
return element;
}
public void setElement(Element element) {
this.element = element;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
}
4、创建一个class——main.java
package com.inspur.learn_xml.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
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;
import com.test.learn_xml.dto.ElementNode;
public class do4jMain {
/**
* @param args
*/
static int num = 0;
static List<ElementNode> elementNodes = new ArrayList<ElementNode>();
public static void main(String[] args)
{
String fileUrl = "WebContent/xml/users.xml";
readModels(fileUrl);
showElements();
fileUrl = "WebContent/xml/test.xml";
createXmlDoc(fileUrl);
}
public static void readModels(String fileUrl)
{
SAXReader saxReader = new SAXReader();
try
{
Document document = saxReader.read(new File(fileUrl));//读取XML文件
Element root = document.getRootElement();//得到根节点
ElementNode elementNode = new ElementNode();
elementNode.setElement(root);
elementNode.setId("0");
elementNode.setParentId("");
elementNodes.add(elementNode);//把根节点加入到容器中去。
num++;
for(int i = 0;i < elementNodes.size();i++)
{
List<Element> elements = new ArrayList<Element>();
elements = elementNodes.get(i).getElement().elements();//得到第i个节点的所有子节点
for(int j = 0;j < elements.size();j++)
{
ElementNode node = new ElementNode();
node.setParentId(String.valueOf(i));
node.setElement(elements.get(j));
node.setId(String.valueOf(num));
elementNodes.add(node);
num++;
}
}
}catch (Exception e)
{
e.printStackTrace();
}
}
public static String createXmlDoc(String fileUrl)
{
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("UTF-8");
try
{
Element root = document.addElement("root") ;//创建根节点
System.out.println("即将生成新的文件");
elementNodes.get(0).setElement(root);
int i = 0;
int childNums = 0;
while(i < elementNodes.size())
{
childNums = elementNodes.size();
for(int j = i+1; j < childNums; j++)
{
if(elementNodes.get(i).getId().equals(elementNodes.get(j).getParentId()))
{
List<Attribute> attributes = new ArrayList<Attribute>();
attributes = elementNodes.get(j).getElement().attributes();
Element element = elementNodes.get(i).getElement().addElement(elementNodes.get(j).getElement().getName());
element.setText(elementNodes.get(j).getElement().getText());
element.setAttributes(attributes);
elementNodes.get(j).setElement(element);
}
}
i++;
}
try
{
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter output = new XMLWriter(new FileOutputStream( new File(fileUrl) ), format);
output.write( document );
output.close();
System.out.println("文件已经生成,"+fileUrl);
}
catch(IOException e)
{
System.out.println(e.getMessage());
}
}
catch (Exception e) {
e.printStackTrace();
}
finally
{
return fileUrl;
}
}
}
5、结果:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<users>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
<user name="ddd" mail="renyi@renyi.com" age="20"/>
</users>
</root>
分享到:
相关推荐
dom4j 被广泛的应用到xml解析上。这里给出部分网络资源
NULL 博文链接:https://even2012.iteye.com/blog/1832068
java学习笔记——使用DOM解析XML和使用SAX解析XML
XML DWR 解析dom 解析xml Ajax 杂乱的例子 学习笔记
dom4j是目前比较主流的对xml文件进行解析的API。
本文档详细的给出了XML的介绍和XML解析的实例。包括DOM4J和SAX解析,节点的名和值得读取,属性的读取。生成XML文件等
自己总结的一份xml学习笔记。内容包括xml文件的书写格式,约束、jaxp及dom4j对xml解析的代码。
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便, 结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 /a/b/c: 表示一层...
移动开发的小白树懒正在努力的学习移动开发中的web体系中的xml解析,每天提高自己...
学习xml时候的笔记以及心得 1)DOM(JAXP Crimson解析器) 2)SAX 3)JDOM http://www.jdom.org 4)DOM4J http://dom4j.sourceforge.net
NekoHTML 学习笔记 NekoHTML 是一个简单的 HTML 扫描器和标签补偿器,使得程序能解析 HTML 文档并用标准的 XML 接口来访问其中的信息。这个解析器能投扫描 HTML 文件并“修正”许多作者(人或机器)在编写 HTML ...
xml.dom篇 DOM是Document Object Model的简称,XML 文档的高级树型表示。该模型并非只针对 Python,而是一种普通XML 模型。Python 的 DOM 包是基于 SAX 构建的,并且包括在 Python 2.0 的标准 XML 支持里。 一、...
DOM是针对XML的基于树的API,它关注的不仅仅是解析XML代码,而是用一系列相互关联的对象来表示这些代码,而这些对象可以被修改,而且无需重新解析代码就能直接访问它们。由于DOM的使用上的简便,因此它成为了Web...
1.浏览器对XML DOM的支持 1.1 DOM2级核心 ①在DOM2级在document.implementation中引入了createDocument()方法(IE6~8不支持)。 可以创建一个空白XML。 var xmldom = document.implemention.createDocument...
本文实例讲述了python爬虫学习笔记之pyquery模块基本用法。分享给大家供大家参考,具体如下: 相关内容: pyquery的介绍 pyquery的使用 安装模块 导入模块 解析对象初始化 css选择器 在选定元素之后的元素再...