转载自:
https://www.cnblogs.com/sharpest/p/7877501.html
https://www.cnblogs.com/hongwz/p/5514786.html
感谢!
2.1、Document对象相关
1、读取XML文件,获得document对象.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2、解析XML形式的文本,得到document对象.
String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
3、主动创建document对象.
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 创建根节点
2.2、节点相关
1、获取文档的根节点.
Element rootElm = document.getRootElement();
2、取得某节点的单个子节点.
Element memberElm=root.element("member");// "member"是节点名
3.取得节点的文字
String text=memberElm.getText();
String text=root.elementText("name");这个是取得根节点下的name字节点的文字.
4.取得某节点下指定名称的所有节点并进行遍历.
List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
5.对某节点下的所有子节点进行遍历.
for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}
6.在某节点下添加子节点.
Element ageElm = newMemberElm.addElement("age");
7.设置节点文字.
ageElm.setText("29");
8.删除某节点.
parentElm.remove(childElm); // childElm是待删除的节点,parentElm是其父节点
9.添加一个CDATA节点.
Element contentElm = infoElm.addElement("content");
contentElm.addCDATA(diary.getContent());
2.3、属性相关.
1.取得节点的指定的属性
Element root=document.getRootElement();
Attribute attribute=root.attribute("size"); // 属性名name
2.取得属性的文字
String text=attribute.getText();
String text2=root.element("name").attributeValue("firstname");
//这个是取得根节点下name字节点的firstname属性的值.
3.遍历某节点的所有属性
Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
4.设置某节点的属性和文字.
newMemberElm.addAttribute("name", "sitinspring");
5.设置属性的文字
Attribute attribute=root.attribute("name");
attribute.setText("sitinspring");
6.删除某属性
Attribute attribute=root.attribute("size");// 属性名name
root.remove(attribute);
直接上代码
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<students>
<student number="0001">
<name>tom</name>
<age>18</age>
<qqs>
<qq id="1">777777</qq>
<qq id="2">888888</qq>
</qqs>
</student>
<student number="0002">
<name >jack</name>
<age>18</age>
<qqs>
<qq id="1">123456</qq>
<qq id="2">121212</qq>
</qqs>
</student>
</students>
package com.xml;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.InputStream;
import java.util.List;
/**
* @author wangben
* @Title: Xml01
* @Package: com.xml
* @ProjectName javase-code
* @Description: TODO
* @date 2019-01-26 10:48 星期六
*/
public class Xml01 {
public static void main(String[] args) throws Exception {
//1.创建解析器对象SAXReader
SAXReader reader = new SAXReader();
//2.读取XML文件,获得document对象
File file = new File(Xml01.class.getClassLoader()
.getResource("bean.xml").getPath());
Document document = reader.read(file);
Element root = document.getRootElement();//3.获得根元素
List<Element> childElements = root.elements();//4.获得所有
//已知属性子元素
yes(childElements);
System.out.println("-----------------------------------");
//未知属性子元素
no(childElements);
}
//已知
public static void yes(List<Element> childElements){
for (Element child : childElements) {
//已知属性名情况下
System.out.println("number: " + child.attributeValue("number"));
//已知子元素名的情况下
System.out.println("name:" + child.elementText("name"));
System.out.println("age:" + child.elementText("age"));
List<Element> qqs = child.elements("qqs");
for (Element qq:qqs) {
System.out.println("qq:"+qq.elementText("qq"));
}
//这行是为了格式化美观而存在
System.out.println();
}
}
//未知元素属性时
public static void no(List<Element> childElements){
for (Element child : childElements) {
//未知属性名情况下
List<Attribute> attributeList = child.attributes();
for (Attribute attr : attributeList) {
System.out.println(attr.getName() + ": " + attr.getValue());
}
//未知子元素名情况下
List<Element> elementList = child.elements();
for (Element ele : elementList) {
System.out.println(ele.getName() + ": " + ele.getText());
//孙子节点
List<Element> list1 = ele.elements();
//判断是否存在
if (list1!=null && list1.size()!=0 ) {
for (Element list : list1) {
System.out.println(list.getName() + ": " + list.getText());
//孙孙节点..不做讨论有机会再看
}
}
}
System.out.println();
}
}
}