zoukankan      html  css  js  c++  java
  • Java解析XML

      虽然开博一年多了,但是今晚还是第一次真正的写博,以前都只是看大牛们的博客,最近发现自己学习过的东西老是忘记,觉得还是要善于总结。由于还不太会使用博客园的编辑功能,发出来可能比较难看,废话少说,开始步入正题。

     一、Java解析XML文档的两种方式:

      (1)Dom方式:Document Object Model,文档对象模型。这种方式是W3C推荐处理XML的一种方式。

      (2)SAX方式:Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。

    二、XML解析开发包:

      (1)JAXP:是SUN公司推出的解析标准实现。JDK

      (2)Dom4J:是开源组织推出的解析开发包。(大家都在使用)

      (3)JDom:是开源组织推出的解析开发包。

    三、使用JAXP进行Dom解析步骤(源代码:E:JavaWorkSpaceday01srccomgnnuitJaxpCRUD.java):

      

       1、获得DocumentBuilder对象:

          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
          DocumentBuilder db = dbf.newDocumentBuilder();

       2、通过DocumentBuilder获得整个XML文档的Document对象:

        Document document = db.parse("src/books.xml");

       3、通过Document对象操作整个XML文档。

       4、更新XML文档:

        TransformerFactory tff = TransformerFactory.newInstance();
          Transformer tf = tff.newTransformer();
                tf.transform(new DOMSource(document), new StreamResult("src/books.xml"));

    四、使用JASP进行SAX解析步骤(源码:E:JavaWorkSpaceday02srccomgnnuitSaxDemo1.java):

      

      注:图片中的SAXReader有误,是XMLReader。

      SAX采用事件处理方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器。

      (1)得到解析器

        SAXParser sp = SAXParserFactory.newInstance().newSAXParser();

      (2)得到读取器

        XMLReader reader = sp.getXMLReader();

      (3)设置事件处理器

        reader.setContentHandler(new MyHandler());

      (4)解析XML

        reader.parse("src/book.xml");

       事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。

      常用的是ContentHandler类,常用方法:startElement、endElement、characters。通常是继承DefaultHandler类,再重写里面的方法。

    五、使用Dom4J进行解析的步骤(源码:E:JavaWorkSpaceday02srccomgnnuitdom4jDom4JDemo.java):

      (1)得到解析器:

        SAXReader reader = new SAXReader();

      (2)加载XML文档:

        Document document = reader.read("src/book.xml");

      (3)获取根元素:

        Element root = document.getRootElement();

      (4)进行各种操作

      (5)更新XML文档:

        OutputFormat format = OutputFormat.createPrettyPrint();
          format.setEncoding("UTF-8");
               XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
           writer.write(document);
           writer.close();

  • 相关阅读:
    flyway
    xxl-job
    响应式布局
    position: fixed
    position: absolute
    position: relative
    GDB高级一点的命令
    坑爹的大页内存
    input8按键对照
    discuz插件应用原理分析
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3393040.html
Copyright © 2011-2022 走看看