我的javaweb学习体验-xml的理解

         xml听说发明出来就是为了替换html的,可是这貌似已经不可能了,毕竟html5都出来了。

        按照我的学习理解,xml的编写需要按照一定的规则,这个规则有DTD,有XML Schema,不过DTD在数据约束上不是很严谨,估计逃不掉被淘汰的命运。

        然后就是对xml的解析,xml的解析分为两种,一是dom解析,二是sax解析。dom解析是w3c公司推荐用的,但是几乎所有的解析包都支持用sax来解析xml,dom解析必须先获取这个文档才能进行操作,且dom占用的内存大容易溢出,相反sax是可以读一部分操作一部分,占用内存小。解析器有那些就不记得了,但是解析包大致有三种,分别是jaxp,jdom,dom4j,dom4j经过前辈牛人的测试听说是最好的。jaxp的解析在dom和sax上都是调用w3c的包来进行解析,而dom4j是调用下载下来的dom4j的jar包才能解析。dom4j解析和jaxp不同,jaxp是先创建工厂解析器,然后创建解析器,再创建文档对象,中间部分就是crud文档,最后就是把crud写到文档中去,具体如下:

             dom解析:

                     //得到dom解析器工厂

                  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

                       //得到默认解析器

                                DocumentBuilder builder =  factory.newDocumentBuilder();

                      //得到文档

                                Ducument document = builder.parse("***.xml");

      

                    //进行crud操作

                               .........................

                              .........................

                 //得到转换工厂

                                TransformerFactory tffactory=TransformerFactory.newInstance();
                   //得到转换器

                                 Transformer transformer=tffactory.newTransformer();
                  //进行转换写入

                                 transformer.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/book.xml")));


              sax解析
               //使用SAXParserFactory创建SAX解析工厂

                               SAXParserFactory spf =SAXParserFactory.newInstance();

            //通过SAX解析工厂得到解析器对象  

                              SAXParser sp=spf.newSAXParser();

            ///通过解析器对象得到一个XML的读取器

                             XMLReader xmlReader=sp.getXMLReader();

            //设置读取器的事件处理器  

                            xmlReader.setContentHandler(new BookParserHandler());

            //解析xml文件  

                           xmlReader.parse("book.xml");

       如上,sax解析的时候要自定义一个事件处理器BookParserHandler之类,一般情况下要继承DefaultHandler ,并实现其中的startElement,chracters和endElement三个函数用来操作数据(文档)。

而dom4j的解析获取文档有三种方法,如下:

1.读取XML文件,获得document对象




SAXReader reader = new SAXReader();

            Document   document =reader.read(new File("input.xml"));


           2. 解析XML形式的文本,得到document对象.

           String text = "<members></members>";

           Document document=DocumentHelper.parseText(text);

          3.动创建document对象

          Document document= DocumentHelper.createDocument();

          Element root = document.addElement("members");


获取对象之后就是操作数据,dom4j文档上基本都已列出,最后就是写入xml,其中很重要的一点是编码问题

,在设置文档格式的时候可指定,具体如下:


          OutputFormat format = OutputFormat.createPrettyPrint();

           format.setEncoding("GBK"); // 指定XML编码  

           XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format);

           writer.write(document);


   end~











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值