关于dom4j在maven中的使⽤
在maven中添加dom4j的依赖, (如何使⽤eclipse构建maven项⽬, 这⾥就不在赘述)
<!-- mvnrepository/artifact/org.dom4j/dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0</version>
</dependency>
这⾥指的注意的是, 如果引⼊的版本较低, 可能不能使⽤dom4j的包, 我之前引⼊的是1.6.1版本, 就是提⽰不能⽤, 后来经过分析, 断定是引⼊版本过低导致。
下⾯是个⼈测试使⽤的案例, ⼤家可以直接拷贝使⽤, 使⽤⼯具是eclipse.
st;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
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;
/*
* DOM4J类
DOM4J定义了⼏个Java类。以下是最常见的类:
Document - 表⽰整个XML⽂档。⽂档Document对象是通常被称为DOM树。
Element - 表⽰⼀个XML元素。 Element对象有⽅法来操作其⼦元素,它的⽂本,属性和名称空间。
Attribute - 表⽰元素的属性。属性有⽅法来获取和设置属性的值。它有⽗节点和属性类型。
Node - 代表元素,属性或处理指令
常见DOM4J的⽅法
当使⽤DOM4J,还有经常⽤到的⼏种⽅法:
Element.attributes() - 获取⼀个元素的所有属性。
Node.valueOf(@Name) - 得到元件的给定名称的属性的值。
*
* */
public class ParseXml {
public void readXML() throws Exception {
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read⽅法读取⼀个⽂件转换成Document对象
Document document = ad(new File("l"));
// 获取根节点元素对象
Element node = RootElement();
// 遍历所有的元素节点
listNodes(node);
elementMethod(node);
}
public void createXML() throws Exception {
Document document = ateDocument();
Element root = document.addElement("cars");
Element supercarElement = root.addElement("supercars").addAttribute("company", "Ferrai");
supercarElement.addElement("carname").addAttribute("type", "FerrariAttr").addText("FerrariText");
supercarElement.addElement("carname").addAttribute("type", "sportsAttr").addText("sportsText");
// 写⼊到⼀个新的⽂件中
writer(document);
}
/**
* 把document对象写⼊新的⽂件
*
* @param document
* @throws Exception
*/
public void writer(Document document) throws Exception {
// 紧凑的格式
// OutputFormat format = ateCompactFormat();
// 排版缩进的格式
OutputFormat format = atePrettyPrint();
// 设置编码
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//l")), "UTF-8"), format);
// 写⼊
writer.write(document);
// ⽴即写⼊
writer.flush();
// 关闭操作
writer.close();
}
/**
* 遍历当前节点元素下⾯的所有(元素的)⼦节点
*
* @param node
*/
public void listNodes(Element node) {
System.out.println("当前节点的名称::" + Name());
// 获取当前节点的所有属性节点
List<Attribute> list = node.attributes();
// 遍历属性节点
for (Attribute attr : list) {
System.out.Text() + "-----" + Name() + "---" + Value());
}
if (!(TextTrim().equals(""))) {
System.out.println("⽂本内容::::" + Text());
}
// 当前节点下⾯⼦节点迭代器
Iterator<Element> it = node.elementIterator();
// 遍历
while (it.hasNext()) {
// 获取某个⼦节点对象
Element e = it.next();
// 对⼦节点进⾏遍历
listNodes(e);
}
}
/**
*
* @param node
*/
public void elementMethod(Element node) {
// 获取node节点中,⼦节点的元素名称为supercars的元素节点。
Element e = node.element("supercars");
// 获取supercars元素节点中,⼦节点为carname的元素节点(可以看到只能获取第⼀个carname元素节点) Element carname = e.element("carname");
System.out.Name() + "----" + Text());
// 获取supercars这个元素节点中,所有⼦节点名称为carname元素的节点。
List<Element> carnames = e.elements("carname");
for (Element cname : carnames) {
System.out.Text());
}
// 获取supercars这个元素节点所有元素的⼦节点。
使用dom4j解析xml文件List<Element> elements = e.elements();
for (Element el : elements) {
System.out.Text());
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论