Java四种生成xml文件的方法

来源:互联网 发布:用java开发apk的步骤 编辑:程序博客网 时间:2024/05/21 14:03

学习来源于视频: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();        }
0 0
原创粉丝点击