DOM生成XML文件

使用DOM方式生成XML文件有如下几步:

第一步:创建DOM树(即规定XML文件中的内容)

  1. 创建javax.xml.parsers.DocumentBuilderFactory对象。
  2. 通过DocumentBuilderFactory对象创建javax.xml.parsers.DocumentBuilder对象
  3. 通过DocumentBuilder对象创建org.w3c.dom.Document对象,Document对象就代表一个XML文件
  4. 通过Document对象的createElement()方法创建根节点
  5. 通过Document对象的createElement()方法创建根节点下的子节点,并为这些子节点设置属性与文本值等。
  6. 利用org.w3c.dom.NodeList接口中的appendChild()方法设置各个节点之间的关系。

第二步:将DOM树转换为XML文件

  1. 创建javax.xml.transform.TransformerFactory类的对象。
  2. 通过TransformerFactory创建javax.xml.transform.Transformer对象。
  3. 使用Transformer对象的transform()方法将DOM树转换为XML文件。

DOM生成XML文件的具体案例如下

public class TestDemoH {
    public static void main(String[] args) throws Exception{
        //1.取得DocumentBuilderFactory对象
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        //2.取得DocumentBuilder对象
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        //3.创建Document对象
        Document document = documentBuilder.newDocument();

        //取得要输出的内容(为了方便,此处直接设置输出内容)
        String names[] = new String[]{"张三","李四"};
        String ages[] = new String[]{"18","19"};
        String tels[] = new String[]{"110","120"};
        String ids[] = new String[] {"001","002"};

        //4.创建根节点<contract>
        Element contract = document.createElement("contract");

        for (int x = 0; x < names.length; x++) {
            //5.创建子节点<member>
            Element member = document.createElement("member");
            //6.为member节点设置属性值(id)
            member.setAttribute("id",ids[x]);

            //7.创建<member>节点的子节点<name>节点
            Element name = document.createElement("name");
            //8.为<name>节点设置文本值
            name.setTextContent(names[x]);
            //9.将<name>节点添加到<member>节点下
            member.appendChild(name);

            //10.创建<member>节点的子节点<age>节点
            Element age = document.createElement("age");
            //10.为<age>节点设置文本值
            age.setTextContent(ages[x]);
            //12.将<age>节点添加到<member>节点下
            member.appendChild(age);

            //13.创建<member>节点的子节点<tel>节点
            Element tel = document.createElement("tel");
            //14.为<tel>节点设置文本值
            tel.setTextContent(tels[x]);
            //15.将<tel>节点添加到<member>节点下
            member.appendChild(tel);

            //16.将<member>节点设置到跟节点下
            contract.appendChild(member);
        }

        //17.将根节点<contract>设置到DOM树下
        document.appendChild(contract);

        //到此,DOM树中的内容设置完毕,接下要要做的就是将DOM树以xml文件的形式进行输出

        //18.创建javax.xml.transform.TransformerFactory对象
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        //19.创建javax.xml.transform.Transformer对象
        Transformer transformer = transformerFactory.newTransformer();
        //20.将DOM树作为输出源,Document接口是Node接口的子接口
        Source source = new DOMSource(document);
        //设置xml文件的输出路径
        File file = new File("E:" + File.separator + "Telephone.xml");
        if (!file.exists()) {
            file.createNewFile();
        }
        //21.设置转换的模式,此时使用流的方式输出
        Result result = new StreamResult(new FileOutputStream(file));
        //22.设置输出文件的编码方式(默认是ISO-8859-1)
        transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
        //23.利用转换工具进行输出
        transformer.transform(source,result);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值