Java中的XML(写)

DOM方式生成XML

public static void cxml() {

        // TODO Auto-generated method stub
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();

        org.w3c.dom.Document docu = db.newDocument();
        docu.setXmlStandalone(true);
        // 创建一个节点作为根节点
        org.w3c.dom.Element booksElement = docu.createElement("books");
        // 创建一个节点作为子节点
        org.w3c.dom.Element bookElement = docu.createElement("book");
        // 给子节点添加子节点以内容
        bookElement.setAttribute("id", "1");// 给子节点设置属性
        // 再创建一个子节点
        org.w3c.dom.Element name =  docu.createElement("name");
        name.setTextContent("遇见位置的自己");

        // 将子节点添加到根节点之间
        bookElement.appendChild( name);
        booksElement.appendChild(bookElement);
        //将根节点添加
        docu.appendChild(booksElement);

        //通过工厂方式将xml文件生成
        TransformerFactory tsf =TransformerFactory.newInstance();
        Transformer ts = tsf.newTransformer();
        ts.setOutputProperty(OutputKeys.INDENT,"yes");//使得xml换行
        ts.transform( new DOMSource(docu), new StreamResult(new File("eric.xml")));
    }

SAX方式生成XML

  • 导入SAXParserHandler类、Book类、以及books.xml文件
public class SAXXML {
    //本节课要使用解析后生成的bookList进行xml文件编写
  public static ArrayList<Book> parseXML (){
      SAXParserHandler handler = null;
        //锟斤拷取一锟斤拷SAXParserFactory锟斤拷实锟斤拷
        SAXParserFactory factory = SAXParserFactory.newInstance();
        //通锟斤拷factory锟斤拷取SAXParser实锟斤拷
        try {
            SAXParser parser = factory.newSAXParser();
            //锟斤拷锟斤拷SAXParserHandler锟斤拷锟斤拷
           handler = new SAXParserHandler();
            parser.parse("books.xml", handler);
            System.out.println("~!~!~!共有" + handler.getBookList().size()
                    + "本书");
            for (Book book : handler.getBookList()) {
                System.out.println(book.getId());
                System.out.println(book.getName());
                System.out.println(book.getAuthor());
                System.out.println(book.getYear());
                System.out.println(book.getPrice());
                System.out.println(book.getLanguage());
                System.out.println("----finish----");
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    return handler.getBookList();
  }
  public static void creatXML() throws TransformerConfigurationException, IOException, SAXException{
      //获取要转换的ArrayList
     ArrayList<Book> bookList =  parseXML();
     //创建xml
     //1.通过SAXTransformerFactory对象
     SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
     //2.通过SAXTransformerFactory对象tff创建TransformerHandler对象handler
     TransformerHandler handler = tff.newTransformerHandler();
     //3.通过handler对象创建transFormer对象
     Transformer tr =  handler.getTransformer();
     //4.通过Transformer对象对XML文件进行设置
     tr.setOutputProperty(OutputKeys.INDENT , "yes");//换行
     tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置xml编码
     //5.创建Result对象并使其与handler进行关联
     File f = new File("src/newbook.xml");
     if(!f.exists()){
         f.createNewFile();
     }
     Result result = new StreamResult(new FileOutputStream(f));
     handler.setResult(result);//与handler进行关联
     //6,通过handler对xml文件进行写
     //打开document
     handler.startDocument();
     AttributesImpl atts = new AttributesImpl();//创建属性对象
     handler.startElement("","" , "bookstore", atts);
     for (Book book : bookList) {
         atts.clear();//清除上一个
         atts.addAttribute("", "", "id", "", book.getId());
            handler.startElement("","" , "book", atts);
                handler.characters(book.getName().toCharArray(), 0, book.getName().length());
            handler.endElement("", "", "book");
         handler.endElement("", "", "bookstore");
    }
     //关闭document 
     handler.endDocument();
  } 
    public static void main(String[] args) throws TransformerConfigurationException, IOException, SAXException {
        // TODO Auto-generated method stub
        creatXML();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值