<person>
<p1>
<name>zhangsanname>
<age>20age>
p1>
<p1>
<name>lisiname>
<age>30age>
p1>
person>
(1)例如查询所有name元素的值
//1、创建解析器
SAXReader reader = new SAXReader();
//2、得到document
Document document = reader.read(url); //url是xml文档的路径
//3、得到根节点
getRootElement();
//4、得到所有p1标签
List<Element> elements = rootElement.elements("p1");
//5、得到name标签
//6、得到name里面的值
element.element("name").getText();
(1)向xml文档某标签末尾中插入标签(向第一个p1标签中插入性别)
//1、获取document
Document document = new SAXReader().read("src/www/testXML/Person.xml");
//2、获取根节点和第一个p1节点
Element rootElement = document.getRootElement();
Element element = rootElement.element("p1");
//3、创建sex标签和标签内容
Element sex = p1.addElement("sex");
sex.setText("women");
//4、将插入操作写回xml文档中
//写回格式化 OutputFormat.createPrettyPrint() 可以有缩进的格式
XMLWriter xmlWriter = new XMLWriter(newFileOutputStream("src/www/testXML/Person.xml"),
OutputFormat.createPrettyPrint());
xmlWriter.write(document);
xmlWriter.close();
(2)在特定位置添加元素(在第一个p1下面的age标签之前添加school标签)
//1、创建解析器,得到根节点和第一个p1节点
Document document = getDocument();
Element p1 = document.getRootElement().element("p1");
//2、创建要添加的元素
Element school = DocumentHelper.createElement("school");
school.setText("edu.com");
//3、将新元素插入指定位置(插入List集合中)
List<Element> elements = p1.elements();
elements.add(0, school);
//4、将插入操作写回xml文档中
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/www/testXML/Person.xml"),
OutputFormat.createPrettyPrint());
xmlWriter.write(document);
xmlWriter.close();
//1、创建解析器
Document document = getDocument();
Element p1 = document.getRootElement().element("p1");
//2、得到要修改的值,并修改
Element age = p1.element("age");
age.setText("0");
//3、将操作写回
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/www/testXML/Person.xml"),
OutputFormat.createPrettyPrint());
xmlWriter.write(document);
xmlWriter.close();
//1、创建解析器,并得到要删除的节点
Document document = getDocument();
Element p1 = document.getRootElement().element("p1");
Element school = p1.element("school");
//2、通过父节点删除指定节点
school.getParent().remove(school);
//3、将操作写回
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/www/testXML/Person.xml"),
OutputFormat.createPrettyPrint());
xmlWriter.write(document);
xmlWriter.close();
//使用 attributeValue();方法
Document document = getDocument();
Element p1 = document.getRootElement().element("p1");
String id1 = p1.attributeValue("id1");
System.out.println(id1);
执行该操作可以直接获取到某个元素
(1)第一种书写形式
/AAA/BBB/CCC:表示一层一层的,AAA下面 BBB下面的 CCC
(2)第二种书写形式
//BBB:表示和这个名称相同,表示只要名称是BBB,都得到
(3)第三种书写形式
/*:表示所有元素
(4)第四种书写形式
** BBB[1] :表示第一个BBB元素
** BBB[last()]:表示最后一个BBB元素
(5)第五种书写形式
//BBB[@id]:表示只要BBB元素上面有id属性,都得到
(6)第六种书写形式
** //BBB[@id=‘b1’]:表示元素名称是BBB,在BBB上面有id属性,并且id属性值为b1
默认情况下。dom4j不支持xpath,如果想使用,则需要进行一下操作
(1)需要引入支持xpath的jar包。
(2)在dom4j里面提供了两个方法,用来支持xpath