XML生成(一):DOM生成XML

DOM生成XML文件的基本流程

创建DOM树

步骤:

1.创建DocumentBuilderFactory对象

2.通过DocumentBuilderFactroy对象创建DocumentBuilder对象

3.通过DocumentBuilder对象的newDocument()方法创建Document对象代表整个XML文件

4.通过Document对象的createElement()方法创建Element对象为节点

5.通过Element对象的appendChild(element)方法,根据节点之间的关系添加子节点

6.通过Element对象的setTextContent()方法给节点添加文本,setAttribute()方法添加属性

将DOM树转换为XML文件

步骤:

1.创建TransformerFactory对象

2.通过TransformerFactory对象创建Transformer对象

3.通过Transformer对象的transformer()方法进行转换(此方法有两个参数,第一个参数是数据源,即创建的DOM树,第二个参数是目的文件, 即需要生成的XML文件,使用StreamResult对象指定)

示例

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class DOMCreateXML {

    /**
     * @param args
     */

    private DocumentBuilder getDocumentBuilder(){

        //创建DocumentBuilderFactory对象
        DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
        DocumentBuilder db=null;
        try {
            //创建DocumentBuilder对象
            db=dbf.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return db;
    }
    public  void createXML(){
        //得到DocumentBuilder对象
        DocumentBuilder db=getDocumentBuilder();
        //创建document对象
        Document document = db.newDocument();
        //standalone属性,表示当前XML是否有相应的dtd或schema文件
        //设置为true,没有约束文件不显示该属性
        document.setXmlStandalone(true);
        //创建根结点
        Element bookstore = document.createElement("bookstore");
        //根结点中添加子结点  创建子节点book
        Element book=document.createElement("book");
        //向book节点下添加子结点
        Element name=document.createElement("name");
        book.appendChild(name);
        //为name节点添加文本
        name.setTextContent("java编程思想");
        //为book节点创建属性
        book.setAttribute("id","1");
        //book节点加入到bookstore
        bookstore.appendChild(book);
        //将bookstore( 已包含了book )节点添加到document中
        document.appendChild(bookstore);

        //创建TransformerFactory对象
        TransformerFactory   tff = TransformerFactory.newInstance();
        try {
            //创建Transformer对象
            Transformer tf = tff.newTransformer();
            //使用setOutputProperty()方法进行文本换行
            tf.setOutputProperty(OutputKeys.INDENT, "yes");
            //Transformer对象的transformer()方法转换    使用StreamResult对象指定需要生成的XML文件
            tf.transform(new DOMSource(document), new StreamResult(new File("books1.xml")));
        } catch (TransformerConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new DOMCreateXML().createXML();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值