使用DOM4J解析XML文档,以及使用XPath提取XML文档
使用DOM4J解析XML文档
需要首先下载DOM4J工具包。这是个第三方工具包
在使用DOM4J解析的时候需要导入 DOM4J的JAR包
下载DOM4J工具包-》在MyEclipse中新建lib文件夹-》在DOM4J中导入JAR包。可以全部导入,也可以导入指定的JAR包,这里我只导入dom4j 的jar包,.--》 右键点击dom4j的jar -》 Build Path -> add to Build Path -> 看见变成奶瓶后就导入成功了
进行增删改查
文档为:
[html]
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书>
<书名 name="xxxxx">第一本书</书名>
<作者>六道01</作者>
<售价>100</售价>
</书>
<书>
<书名>第二本书</书名>
<作者>六道02</作者>
<售价>200</售价>
</书>
</书架>
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书>
<书名 name="xxxxx">第一本书</书名>
<作者>六道01</作者>
<售价>100</售价>
</书>
<书>
<书名>第二本书</书名>
<作者>六道02</作者>
<售价>200</售价>
</书>
</书架>
程序为:
[java]
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
//使用dom4j解析XML文档
public class Demo1
{
// 读取XML第二本书的: <书名>第二本书</书名>
// 读取!!
@Test
public void read() throws Exception
{
// 获得document
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/MyBook.xml"));
// 获得根节点
Element root = document.getRootElement();
// 通过elements获得 素有包含书的标签的 文档,并再获得第二个标签的书 get(1);
// 需要强转 因为通过elements获得的是list集合 里面是object 类型
Element book = (Element) root.elements("书").get(1);
// 获得书里面的内容
String value = book.element("书名").getText();
System.out.println(value);
// 获得里面的属性的值
// 第一本书才有属性 所以get(0)
Element book2 = (Element) root.elements("书").get(0);
// 获得书里面的内容
String value2 = book2.element("书名").attribute("name").getValue();
System.out.println(value2);
}
// 写入
// 在第一本书上添加一个新的售价 :<售价> 250元 </售价>
// 写入的时候注意编码的问题 默认使用GB2312
@Test
public void add() throws DocumentException, IOException,
FileNotFoundException
{
// 获得document
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/MyBook.xml"));
Element book = document.getRootElement().element("书");
book.addElement("售价").setText("250元");
// 格式化输入器。 createPrettyPrint创建漂亮的格式化输入器
OutputFormat format = OutputFormat.createPrettyPrint();
// 文档是什么类型格式化输入器就是什么类型
format.setEncoding("UTF-8");
// 更新XML文档 ,将内存中数据写入XML文档当中去
// 这里用的是字节流,用字符流的话不会查码表,如果写入和输出的编码不一样则会乱码
// 用字节流会查自己提供的码表。
XMLWriter writer = new XMLWriter(
new FileOutputStream("src/MyBook.xml"), format);
// 开始写入
writer.write(document);
writer.close();
}
// 在一本书的指定的位置添加售价:<售价> 350元 </售价> 只要更改保存了所有孩子的list集合的顺序
@Test
public void add2() throws DocumentException, IOException,
FileNotFoundException
{
// 获得document
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/MyBook.xml"));
// 得到书的标签
Element
补充:web前端 , HTML/CSS ,