Java四种生成xml文件的方法

学习来源于视频:imooc网

1,DOM

  //创建一个DocumentBuilderFactory对象
        DocumentBuilderFactory dbf =
                DocumentBuilderFactory.newInstance();
        //创建一个DocumentBuilder对象
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();

            Document document = db.newDocument();
            document.setXmlStandalone(true);

            Element bookstore = document.createElement("bookStore");
            //向bookStore根节点中添加子节点
            Element book = document.createElement("book");
            book.setAttribute("id", "1");

            Element name = document.createElement("name");
            name.setTextContent("sdingba");
            book.appendChild(name);

            //将book节点添加到bookstore中
            bookstore.appendChild(book);

            //将bookstore节点(已经包含book),添加到dom树中
            document.appendChild(bookstore);

        //生成xml对象

            //创建TransformerFactory
            TransformerFactory tff = TransformerFactory.newInstance();
            //创建Transformer对象
            Transformer tf = tff.newTransformer();

            //设置 生成的xml文件是否换行。
            tf.setOutputProperty(OutputKeys.INDENT,"yes");

            tf.transform(new DOMSource(document), new StreamResult(new File("book.xml")));

        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }

2,SAX


        //1,创建 一个TransformerFactory的类的对象
        SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();

        try {
            //2,通过SAXTransformerFactory对象创建一个TransformerHandler对象
            TransformerHandler handler = tff.newTransformerHandler();

            //3.通过handler对象创建一个Transformor
            Transformer tr = handler.getTransformer();

            //4,通过对象,对生成的xml文件进行设置
            tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            tr.setOutputProperty(OutputKeys.INDENT, "yes");

            //5,创建一个result对象
            File file = new File("book2.xml");
            if (!file.exists()) {
                file.createNewFile();
            }

            //6,创建resulet对象,并且是的与handler关联
            Result result = new StreamResult(new FileOutputStream(file));
            handler.setResult(result);

            //7.利用handler对象进行xml文件内容的编写
            //打开document
            handler.startDocument();

            AttributesImpl attr = new AttributesImpl();
            handler.startElement("", "", "bookstart", attr);

            attr.clear();


               for(){}  在for循环中添加数据。对了List数值进行遍历
            //添加一本书
            attr.addAttribute("","","id","","1");
            handler.startElement("", "", "book", attr);

            //创建name节点
            attr.clear();
            handler.startElement("", "", "name", attr);
            handler.characters("你是我的女神".toCharArray(),0,"你是我的女神".length());
            handler.endElement("","","name");

            // 。。。。。

            handler.endElement("","","book");



            handler.endElement("","","bookstart");
            //关闭
            handler.endDocument();

        } catch (TransformerConfigurationException e) {

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }

3,DOM4J

   //1,创建 document对象,代表整个xml文档
        Document document = DocumentHelper.createDocument();

        //2,创建  根节点
        Element rss = document.addElement("rss");
        //向rrs中添加属性
        rss.addAttribute("version", "2.0");

        //3,生成子节点和节点内容
        Element channel = rss.addElement("channel");
        Element title = channel.addElement("title");
        title.setText("国内新闻");

        //要在下面设置是否转义
//        title.setText("<![CDATA[国内新闻]]>");


        //设置xml的格式
        OutputFormat format =
                OutputFormat.createPrettyPrint();
//        format.setEncoding("GBK");设置编码格式

        //4,生成xml文件
        File file = new File("rss.xml");
        XMLWriter write = null;
        try {

            write = new XMLWriter(new FileOutputStream(file),format);

            //设置是否转义,默认值是true,代表转义
            write.setEscapeText(false);

            write.write(document);
            write.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

4,JDOM

    //生成一个根节点
        Element rss = new Element("rss");
        rss.setAttribute("version", "2.0");

        //生成一个document对象
        Document document = new Document(rss);

        Element channel = new Element("channel");
        rss.addContent(channel);

        Element title = new Element("title");
//        title.setText("国内最新新闻");
        title.setText("<![CDATA[新闻联盟]]>");
        channel.addContent(title);


        Format format = Format.getCompactFormat();
        format.setIndent("");
        format.setEncoding("UTF-8");
//        format.setTextMode(Format.TextMode.TRIM);
//        format.setOmitEncoding(false);
//        format.setSpecifiedAttributesOnly(true);

        //4,创建xmlOutputer对象
        XMLOutputter outputer = new XMLOutputter();

        //5.利用outputer对象,将document转化成一个流
        try {
            outputer.output(document, new FileOutputStream(new File(
                    "rssjdom.xml"
            )));

        } catch (IOException e) {
            e.printStackTrace();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值