package com.dom4j;
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Assert;
import org.junit.Test;
public class XMLParsing{
// 1、得到某个具体的节点内容:于洋
@Test
public void test1()throws Exception{
//获取document对象
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
// String str = "<书></书>";此法怎么使用
// Document document = DocumentHelper.parseText(str);
//获取根元素
Element root = document.getRootElement();
//获取根下面书元素list
//.elements
List<Element> bookElements = root.elements();
//获取第二个书元素
Element book = bookElements.get(1);
//获取作者元素
Element auth = book.element("作者");
String txt = auth.getText();
Assert.assertEquals("于洋", txt);
}
//使用xpath
@Test
public void test11()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
String xpath = "//书[2]/作者";
Node node = document.selectSingleNode(xpath);
Assert.assertEquals("于洋", node.getText());
}
// 2、遍历所有元素节点:打印他们的名称
@Test
public void test2()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
treeWalk(root);
}
public void treeWalk(Element e){
System.out.println(e.getName());
List<Element> children = e.elements();
for(Element ele:children){
treeWalk(ele);
}
}
// 3、修改某个元素节点的主体内容:<售价>29元</售价>--><售价>29.1元</售价>
@Test
public void test3()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//获取售价元素
Element priceEle = root.element("书").element("售价");
//修改文本
priceEle.setText("29.11元");
//写回XML
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"));
writer.write(document);
writer.close();
}
// 4、向指定元素节点中增加子元素节点:第一本书后面添加 <批发价>10</批发价>
@Test
public void test4()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
root.element("书").addElement("批发价").setText("10");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"));
writer.write(document);
writer.close();
}
// 5、向指定元素节点上增加同级元素节点:第1本书售价前面添加 零售价100
@Test
public void test5()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element book = document.getRootElement().element("书");
//创建新的元素
Element price = DocumentHelper.createElement("零售价");
price.setText("100");
book.elements().add(2, price);
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"));
writer.write(document);
writer.close();
}
// 6、删除指定元素节点:零售价
@Test
public void test6()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
//删除
root.element("书").remove(root.element("书").element("零售价"));
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"));
writer.write(document);
writer.close();
}
// 7、操作XML文件属性:读属性值和添加属性值.添加属性
@Test
public void test7()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
Element firstBook = root.element("书");
//添加属性值
firstBook.addAttribute("出版社", "黑马训练营");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"));
writer.write(document);
writer.close();
//读属性
String attr = firstBook.attributeValue("出版社");
Assert.assertEquals("黑马训练营", attr);
}
@Test
public void test8()throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
String xpath = "//书[1]";
Node node = document.selectSingleNode(xpath);
String attr = node.valueOf("@出版社");
Assert.assertEquals("黑马训练营", attr);
}
}
XMLParsing
最新推荐文章于 2023-06-19 15:28:14 发布