当前位置:编程学习 > XML/UML >>

使用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  ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,