栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

XML 第三篇(解析)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML 第三篇(解析)

1. 解析的概念:

操作xml文档
    1. 解析(读取):将文档中的数据读取到内存中
    2. 写入:将内存中的数据保存到xml文档中。持久化的存储

2. DOM4J简介


        dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。
        dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。
        对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。

3. DOM4J使用

导入jar包:
    在java项目中创建lib目录,然后将jar包引入,右键lib目录选择 Add as Libary... -->> Module Libary

4.案例:

demo.xml



<图书列表 学校="XX大学">名著 
  <西游记 id="1"> 
    <作者>吴承恩  
    <朝代>明朝 
    
  <水浒传 id="2"> 
    <作者>施耐庵  
    <朝代>明朝 
    
  <三国演义 id="3"> 
    <作者>罗贯中  
    <朝代>明朝 
    
  <红楼梦 id="4"> 
    <作者>曹雪芹  
    <朝代>清朝 
   

XmlDemo.java

package com.qf.xml;

import org.dom4j.Attribute;
import org.dom4j.document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.util.List;

public class XmlDemo {

    @Test
    public  void testFile(){
        File file = new File("G:\IdeaProjects\JavaEE\DOM4J\src\com\qf\xml/demo.xml");
        System.out.println(file.length());
    }

    @Test
    public void delete() throws Exception{
        //创建解析器
        SAXReader saxReader = new SAXReader();
        //获取文件对象
        File file = new File("G:\IdeaProjects\JavaEE\DOM4J\src\com\qf\xml/demo.xml");
        //获取document对象
        document doc = saxReader.read(file);
        //先获取根节点(根元素)
        Element root = doc.getRootElement();
        //获取需要删除的节点(获取子元素)
        Element ele = root.element("平凡的世界");
        //调用删除的方法
        ele.detach();

        //设置写入的排版格式
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
        outputFormat.setEncoding("utf-8");//设置字符集
        //创建写入的对象
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        //写入到xml中
        XMLWriter xmlWriter = new XMLWriter(fileOutputStream, outputFormat);
        //调用写入的方法
        xmlWriter.write(doc);
        //关闭
        xmlWriter.close();
    }


    @Test
    public void update() throws Exception{
        //创建解析器
        SAXReader saxReader = new SAXReader();
        //获取文件对象
        File file = new File("G:\IdeaProjects\JavaEE\DOM4J\src\com\qf\xml/demo.xml");
        //获取document对象
        document doc = saxReader.read(file);
        //先获取根节点(根元素)
        Element root = doc.getRootElement();
        //获取需要修改的节点(获取子元素)
        Element ele = root.element("活着");
        //修改元素名
        ele.setName("平凡的世界");
        //获取id属性
        Attribute attribute = ele.attribute("id");
        //修改id属性值
        attribute.setValue("7");
        //修改作者
        ele.element("作者").setText("路遥");

        //设置写入的排版格式
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
        outputFormat.setEncoding("utf-8");//设置字符集
        //创建写入的对象
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        //写入到xml中
        XMLWriter xmlWriter = new XMLWriter(fileOutputStream, outputFormat);
        //调用写入的方法
        xmlWriter.write(doc);
        //关闭
        xmlWriter.close();
    }

    @Test
    public void Add() throws Exception{
        //创建解析器
        SAXReader saxReader = new SAXReader();
        //获取文件对象
        File file = new File("G:\IdeaProjects\JavaEE\DOM4J\src\com\qf\xml/demo.xml");
        //获取document对象
        document doc = saxReader.read(file);
        //先获取根节点(根元素)
        Element root = doc.getRootElement();
        //添加子节点
        Element element = root.addElement("活着");
        //添加
        element.addAttribute("id","5");
        //添加element的子节点
        Element element1 = element.addElement("作者");
        element1.addText("余华");
        Element element2 = element.addElement("朝代");
        element2.addText("现代");

        //设置写入的排版格式
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
        outputFormat.setEncoding("utf-8");//设置字符集
        //创建写入的对象
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        //写入到xml中
        XMLWriter xmlWriter = new XMLWriter(fileOutputStream, outputFormat);
        //调用写入的方法
        xmlWriter.write(doc);
        //关闭
        xmlWriter.close();
    }


    @Test
    public void findAll() throws Exception{
        //创建解析器
        SAXReader saxReader = new SAXReader();
        //获取文件对象
        File file = new File("G:\IdeaProjects\JavaEE\DOM4J\src\com\qf\xml/demo.xml");
        //获取document对象
        document doc = saxReader.read(file);
        //先获取根节点(根元素)
        Element root = doc.getRootElement();
        //获取根元素信息
        System.out.println("根元素名称:"+root.getName());
        System.out.println("根元素的属性:"+root.attribute(0).getName());
        //System.out.println("根元素的属性:"+root.attribute("学校").getName());
        System.out.println("根元素的属性的属性值:"+root.attributevalue("学校"));
        System.out.println("根元素的文本内容:"+root.getTextTrim());
        System.out.println("----------------------------------------");
        //获取所有子节点(子元素)
        List elements = root.elements();
        //遍历
        for(Element e : elements){
            System.out.println(e.getName());
        }
        System.out.println("----------------------------------------");
        //通过元素名获取单个元素
        Element xyj = root.element("西游记");
        System.out.println("西游记的id属性值:"+xyj.attributevalue("id"));
        System.out.println("西游记的作者:"+xyj.element("作者").getTextTrim());
        System.out.println("----------------------------------------");
        getAll(root);

    }

    //查询xml中所有数据
    public void getAll(Element element){

        List elements = element.elements();

        for(int i = 0;i 

XpathDemo.java

package com.qf.xml;

import org.dom4j.document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.List;

public class XpathDemo {

    public static void main(String[] args) throws Exception {
        //创建解析器
        SAXReader saxReader = new SAXReader();
        //获取文件对象
        File file = new File("G:\IdeaProjects\JavaEE\DOM4J\src\com\qf\xml/demo.xml");
        //获取document对象
        document doc = saxReader.read(file);

        //获取指定单个节点对象
        Element ele =  (Element)doc.selectSingleNode("/图书列表");
        System.out.println(ele.getName());

        //获取多个节点对象
        List elements =  doc.selectNodes("//作者");
        for(Element e : elements){
            System.out.println(e.getTextTrim());
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号