zoukankan      html  css  js  c++  java
  • XML解析之dom4j

    一、XML解析方式有两类:
            一】DOM(文档对象模型)
                1)一次性将整个XML文件读到内存,形成一颗DOM树
            二】SAX(XML的简单API)[simple API for XML]
                1)SAX多次将XML文件的每部分读到内存

    二、步骤:

      一】利用SAXReader类获取Document对象

            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));

      二】通过Document获取元素和属性

        常用方法: 

                  得到子元素的List集合:     List       elements()
                  得到元素的名称:           String     getName()
                  得到指定子元素引用:        Element    element("子元素名称");
                  得到子元素封装的信息:      String     elementText("子元素名称");
                  得到元素的属性值:         String      attributeValue("属性名");
                  添加一个子元素:           Element     addElement("子元素名称");
                  设置元素封装的信息:       void        setText("封装的信息");
                  删除一个子元素:          boolean     remove(子元素引用);
                  将元素转换成字符串:       String      asXML();

       三】通过XMLWriter类将内存中的XML文件回写到硬盘上

        常用类及方法:

           1)OutputFormat对象:制定流的输出时在文档中的显示格式
                    常用方法:
                            返回一个优美的格式器对象:static OutputFormat createPrettyPrint();
              2) XMLWriter流对象:用于将内存中的XML文件输出到硬盘上
                    构造方法:
                                XMLWriter(输出流)
                    常用方法:
                                将内存中的XML写入到硬盘上:void writer(Document document);
                                关闭流:void close();

    三、对XML文件进行增删改查

      code:

        private Document getDocument() throws Exception {
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));
            return document;
        }
        
        
        @Test
        public void add() throws Exception {
            Document document = getDocument();
            Element element = document.getRootElement();
            Element carElement = (Element) element.elements().get(0);
            Element priceElement = carElement.addElement("价格");
            priceElement.setText("20万");
            
            doc2XML(document);
        }
        
        @Test
        public void delete() throws Exception {
            Document document = getDocument();
            Element element = document.getRootElement();
            List<Element> elmentList = element.elements();
    
            Element carElement = elmentList.get(0);
            Element priceElement = carElement.element("价格");
            
            carElement.remove(priceElement);
            
            doc2XML(document);
        }
        
        @Test
        public void update() throws Exception {
            Document document = getDocument();
            Element rootElement = document.getRootElement();
            Element carElement  = (Element) rootElement.elements().get(0);
            
            carElement.element("价格").setText("60万元");
        
            doc2XML(document);
        }
        
        @Test
        public void select() throws Exception {
            Document document = getDocument();
            Element rootElement = document.getRootElement();
            
            Element carElement = (Element) rootElement.elements().get(0);
            String price = carElement.element("价格").getTextTrim();
            System.out.println("价格为:" + price);
        }
        
        
        private void doc2XML(Document doc) throws Exception {
            
            //得到一个格式优美的格式输出器
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();
            
            
            File file = new File("src/com/suse/simpledom4j/car.xml");
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file), outputFormat);
            
            
            xmlWriter.write(doc);
            xmlWriter.close();
            
            
        }

    四、其它API

     一】 DocumentHelper对象:   

              static Document createDocument();//创建一个Document对象
              
    static Element createElement("元素名");//创建一个元素,并返回此元素的子类【注:可以使用】 static Document parseText("符合XML格式的字符串");//创建一个document对象并返回
            
                  

      二】在指定位置插入节点元素
                  ----通过List集合的add(index,E)方法
              方法原型:
                    void add(int index, E element);

      三】字符串与XML文件的转换

        1)字符串  --->    XML
                    通过parseText方法
                    eg:

                 String text = "<members> <member>sitinspring</member></members>";
                         Document dDocument = DocumentHelper.parseText(text);


            2)XML   --->        字符串
                    通过asXML方法:Document、和Element对象都具有此方法
                    eg:

                         SAXReader reader = new SAXReader();
                         Document document = reader.read(new File("input.xml"));
                         Element rootElement = docuemnt.getRootElement();
                         Element memberElement = root.element("member");
                        
                         String str_doc = document.saXML();
                         String str_rootEle = rootElement.asXML();
                         String str_memberEle = memberElement.asXML();

     

  • 相关阅读:
    LoadScript
    Mac终端Terminal调用Sublime Text
    jquery ajax 提交 FormData
    ps切图设置
    bootstrap-select搜索框输入中文
    Homebrew安装
    清空file input框
    javascript 随机数区间
    Canvas与Image互转
    html空格小结
  • 原文地址:https://www.cnblogs.com/SkyGood/p/3964816.html
Copyright © 2011-2022 走看看