写出内容到xml文档

package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * 第一个写出内容到xml文档
 * @author APPle
 *
 */
public class Demo1 {

    public static void main(String[] args) throws Exception{
        //一、读取或创建一个Document对象
        //读取day07项目的xm文件
        Document doc = new SAXReader().read(new File("./src/contact.xml"));

        //二、修改Document对象内容

        //三、把修改后的Document对象写出到xml文档中
        //指定文件输出的位置
        FileOutputStream out = new FileOutputStream("e:/contact.xml");
        //1.创建写出对象
        XMLWriter writer = new XMLWriter(out);

        //2.写出对象
        writer.write(doc);
        //3.关闭流
        writer.close();
    }

}
package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * 讨论写出内容到xml文档的细节
 * @author APPle
 *
 */
public class Demo2 {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        Document doc = new SAXReader().read(new File("./src/contact.xml"));
        //指定文件输出的位置
        FileOutputStream out = new FileOutputStream("e:/contact.xml");
        /**
         * 1.指定写出的格式
         */
        OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
        //OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
        /**
         * 2.指定生成的xml文档的编码
         *    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)
         *    结论: 使用该方法生成的xml文档避免中文乱码问题。
         */
        format.setEncoding("utf-8");

        //1.创建写出对象
        XMLWriter writer = new XMLWriter(out,format);

        //2.写出对象
        writer.write(doc);
        //3.关闭流
        writer.close();
    }

}
package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Attribute;
import org.dom4j.Document;
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;

/**
 * 修改xml内容
 * 增加:文档,标签 ,属性
 * 修改:属性值,文本
 * 删除:标签,属性
 * @author APPle
 *
 */
public class Demo3 {

    /**
     * 增加:文档,标签 ,属性
     */
    @Test
    public void test1() throws Exception{
        /**
         * 1.创建文档
         */
        Document doc = DocumentHelper.createDocument();
        /**
         * 2.增加标签
         */
        Element rootElem = doc.addElement("contactList");
        //doc.addElement("contactList");
        Element contactElem = rootElem.addElement("contact");
        contactElem.addElement("name");
        /**
         * 3.增加属性
         */
        contactElem.addAttribute("id", "001");
        contactElem.addAttribute("name", "eric");

        //把修改后的Document对象写出到xml文档中
        FileOutputStream out = new FileOutputStream("f:/contact.xml");
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        writer.write(doc);
        writer.close();
    }

    /**
     * 修改:属性值,文本
     * @throws Exception
     */
    @Test
    public void test2() throws Exception{
        Document doc = new SAXReader().read(new File("./src/contact.xml"));

        /**
         * 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值
         */
        //1.1  得到标签对象
        /*
        Element contactElem = doc.getRootElement().element("contact");
        //1.2 得到属性对象
        Attribute idAttr = contactElem.attribute("id");
        //1.3 修改属性值
        idAttr.setValue("003");
        */
        /**
         * 方案二: 修改属性值
         */
        //1.1  得到标签对象
        /*
        Element contactElem = doc.getRootElement().element("contact");
        //1.2 通过增加同名属性的方法,修改属性值
        contactElem.addAttribute("id", "004");
        */

        /**
         * 修改文本 1.得到标签对象 2.修改文本
         */
        Element nameElem = doc.getRootElement().
            element("contact").element("name");
        nameElem.setText("李四");

        FileOutputStream out = new FileOutputStream("e:/contact.xml");
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        writer.write(doc);
        writer.close();
    }

    /**
     * 删除:标签,属性
     * @throws Exception
     */
    @Test
    public void test3() throws Exception{
        Document doc = new SAXReader().read(new File("./src/contact.xml"));

        /**
         * 1.删除标签     1.1 得到标签对象  1.2 删除标签对象
         */
        // 1.1 得到标签对象
        /*
        Element ageElem = doc.getRootElement().element("contact")
                    .element("age");

        //1.2 删除标签对象
        ageElem.detach();
        //ageElem.getParent().remove(ageElem);
        */
        /**
         * 2.删除属性   2.1得到属性对象  2.2 删除属性
         */
        //2.1得到属性对象
        //得到第二个contact标签
        Element contactElem = (Element)doc.getRootElement().
            elements().get(1);
        //2.2 得到属性对象
        Attribute idAttr = contactElem.attribute("id");
        //2.3 删除属性
        idAttr.detach();
        //idAttr.getParent().remove(idAttr);

        FileOutputStream out = new FileOutputStream("e:/contact.xml");
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        writer.write(doc);
        writer.close();
    }
}
package gz.itcast.a_dom4j_write;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;

import org.dom4j.Document;
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;

/**
 *
 * 1.使用dom4j的api来生成以下的xml文件
<Students>
<Student id="1">
    <name>张三</name>
    <gender>男</gender>
    <grade>计算机1班</grade>
    <address>广州天河</address>
</Student>
<Student id="2">
    <name>李四</name>
    <gender>女</gender>
    <grade>计算机2班</grade>
    <address>广州越秀</address>
</Student>
</Students>

2.修改id为2的学生的姓名,改为“王丽”

3.删除id为2的学生
 * @author APPle
 *
 */
public class Demo4 {

    /**
     * 1.生成指定xml文档
     * @throws Exception
     */
    @Test
    public void test1() throws Exception{
        //1.内存创建xml文档
        Document doc = DocumentHelper.createDocument();

        //2.写入内容
        Element rootElem = doc.addElement("Students");

        //2.1 增加标签
        Element studentElem1 = rootElem.addElement("Student");
        //2.2 增加属性
        studentElem1.addAttribute("id", "1");
        //2.3 增加标签,同时设置文本
        studentElem1.addElement("name").setText("张三");
        studentElem1.addElement("gender").setText("男");
        studentElem1.addElement("grade").setText("计算机1班");
        studentElem1.addElement("address").setText("广州天河");

        //2.1 增加标签
        Element studentElem2 = rootElem.addElement("Student");
        //2.2 增加属性
        studentElem2.addAttribute("id", "2");
        //2.3 增加标签,同时设置文本
        studentElem2.addElement("name").setText("李四");
        studentElem2.addElement("gender").setText("女");
        studentElem2.addElement("grade").setText("计算机2班");
        studentElem2.addElement("address").setText("广州越秀");

        //3.内容写出到xml文件
        //3.1 输出位置
        FileOutputStream out = new FileOutputStream("e:/student.xml");
        //3.2 指定格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        // 设置编码
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        //3.3 写出内容
        writer.write(doc);
        //3.4关闭资源
        writer.close();

    }

    /**
     * 2.修改id为2的学生姓名
     * @throws Exception
     */
    @Test
    public void test2() throws Exception{
        //1.查询到id为2的学生
        Document doc = new SAXReader().read(new File("e:/student.xml"));
        //1.1 找到所有的Student标签
        Iterator<Element> it = doc.getRootElement().elementIterator("Student");
        while(it.hasNext()){
            Element stuElem = it.next();
            //1.2 查询id为id的学生标签
            if(stuElem.attributeValue("id").equals("2")){
                stuElem.element("name").setText("王丽");
                break;
            }
        }

        //3.1 输出位置
        FileOutputStream out = new FileOutputStream("e:/student.xml");
        //3.2 指定格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        // 设置编码
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        //3.3 写出内容
        writer.write(doc);
        //3.4关闭资源
        writer.close();
    }

    /**
     * 3.删除id为2的学生
     * @throws Exception
     */
    @Test
    public void test3() throws Exception{
        //1.查询到id为2的学生
        Document doc = new SAXReader().read(new File("e:/student.xml"));
        //1.1 找到所有的Student标签
        Iterator<Element> it = doc.getRootElement().elementIterator("Student");
        while(it.hasNext()){
            Element stuElem = it.next();
            //1.2 查询id为id的学生标签
            if(stuElem.attributeValue("id").equals("2")){
                //1.3 删除该学生标签
                stuElem.detach();
                break;
            }
        }

        //3.1 输出位置
        FileOutputStream out = new FileOutputStream("e:/student.xml");
        //3.2 指定格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        // 设置编码
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        //3.3 写出内容
        writer.write(doc);
        //3.4关闭资源
        writer.close();
    }
}
时间: 2024-08-03 23:01:03

写出内容到xml文档的相关文章

如何写出专业级OOP程序-----文档注释

由于时间的限制就写一些通用的注释啦> @author 姓名 这个标记将产生一个作者条目,可以使用多个@author注释,每个对应一个作者. @version 文本 这个标记产生版本条目,对当前版本的描述 @since 文本 这个标记始于条目. @deprecated 文本 这个将标记类.方法/变量添加一个不再使用的注释.可通过@see 和 @link 标记,使用超链接. @see 引用 标记后,找到需要生成javadoc文档的java文件.执行 javadoc -d docDirectory *

xml基础及其解析xml文档

xml基础及其解析xml文档 xml基础及其解析xml文档 xml基础语法 中国特色乱码问题 写xml文件的工具 xml中使用的转义字符 处理指令已经过时 xml的两个重要的功能 xml注释 xml解析Java应用程序读取xml文件的内容 xml解析原理 xml解析工具 DOM4J使用 DOM4J中核心API 将xml文档从磁盘读进内存形成Document对象 读取所有的标签节点 读取所有的属性节点 读取所有的文本节点 解决上面提出的问题 xml基础语法 一个基本的xml构成: <!--vers

XML 文档的结构

XML 文档的组成 一个XML文档由两部分构成:第一部分是文档序言,第二部分是文档元素(节点). 1.文档序言 文档序言通常位于XML文档的顶端,根元素之前出现,它是一个特定的包含XML 文档设定信息的部分.XML 文档序言由如下几个部分组成: XML 声明:用来设置XML文档解析时所需的基本参数. 处理指令:为某个特定类型的软件反馈一条特殊的指令. 文档类型定义:用来设置更多高级的信息,如实体.属性及有效性相关的信息. 注释:用于提醒XML文档作者或临时标注出文档中不完善的部分. 2.文档元素

IOS 解析XML文档

前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里就不做过多介绍,我选择的SAX模式. IOS解析XML用的是自带的NSXML框架,框架的核心是NSXMLParser类和它的委托协议NSXMLParserDelegate,其主要的解析工作是在NSXMLParserDelegate实现类中完成的.委托中定义了许多回掉方法,在SAX解析器从上到下遍历X

XML文档追加内容,读取内容

<> 1>从根节点开始追加 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace 追加XML { class Program { static void Main(string[] args) { //追加XML文档(追加X

对xml文档内容进行增删查改

直接添代码: XML文档名称(one.xml) <?xml version="1.0" encoding="UTF-8" standalone="no"?><school> 北京大学 <student> 00012 <name>张三</name> <birthday name="mmmmmm">8月26日</birthday></stud

用xpath提取xml文档指定标签的内容

1 <?xml version="1.0" encoding="UTF-8"?> 2 <书架> 3 <书> 4 <书名 name="vvvb">何茂赟自传</书名> 5 <作者>何茂赟</作者> 6 <售价>500.00</售价> 7 <售价>1234元</售价><售价>1234元</售价>&

JAVA对象和XML文档、原来他们之间还有这一出

最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xml格式的字符获得所需数据成了 解决问题的关键..在这之前,以为会有点难...做完之后,然并卵,也就那么一回事... LZ主要用的xStream类..这个类的完美地解决了XML文档和JAVA对象之间的转换.. 由于刚刚接触这个类...对于里面提供的很多功能还没细细挖掘..只是简单地实现了 我想要实现的

网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档

小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心:通过该项目,我们对业务流程有一个整体把控.对继承和多态有深入的了解 下面是类图: 主界面图: 核心思路: 1   1.首先在频道管理类ChannelManager中写一个加载所有频道方法LoadAllChannel; 2   3        该方法作用读取FullChannels.xml文件,并且