橄榄绿 发表于 2013-2-3 12:20:03

java 创建与解析XML文件

newfilename 修改后另存为该文件
       * @return 返回操作结果, 0表失败, 1表成功
       */

      public int ModiXMLFile(String filename,String newfilename){
         int returnValue = 0;
         try{
             SAXReader saxReader = new SAXReader();
             Document document = saxReader.read(new File(filename));
             //Document document=saxReader.read(new StringReader(filename));
             /** 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no */
             /** 先用xpath查找对象 */
             List list = document.selectNodes("/books/book/@show" );
             Iterator iter = list.iterator();
             while(iter.hasNext()){
                Attribute attribute = (Attribute)iter.next();
                if(attribute.getValue().equals("yes")){
                    attribute.setValue("no");
                }
             }
             /**
              * 修改内容之二: 把owner项内容改为Tshinghua
              * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type
              */
             list = document.selectNodes("/books/owner" );
             iter = list.iterator();
             if(iter.hasNext()){
                Element ownerElement = (Element)iter.next();
                ownerElement.setText("Tshinghua");
                Element dateElement = ownerElement.addElement("date");
                dateElement.setText("2007-09-06");
                dateElement.addAttribute("type","Gregorian calendar");
             }

             /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */

             list = document.selectNodes("/books/book");

             iter = list.iterator();

             while(iter.hasNext()){

                Element bookElement = (Element)iter.next();

                Iterator iterator = bookElement.elementIterator("title");

                 while(iterator.hasNext()){

                    Element titleElement=(Element)iterator.next();

                    if(titleElement.getText().equals("Dom4j Tutorials")){

                       bookElement.remove(titleElement);

                    }

                }

             }



             try{

                /** 将document中的内容写入文件中 */

                XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));

                writer.write(document);

                writer.close();

                /** 执行成功,需返回1 */

                returnValue = 1;

             }catch(Exception ex){

                ex.printStackTrace();

             }



         }catch(Exception ex){

             ex.printStackTrace();

         }

         return returnValue;

      }


      /**

         * 格式化XML文档,并解决中文问题

         * @param filename

         * @return

         */

        public int formatXMLFile(String filename){

           int returnValue = 0;

           try{

               SAXReader saxReader = new SAXReader();

               Document document = saxReader.read(new File(filename));

               XMLWriter writer = null;

               /** 格式化输出 */

               OutputFormat format = OutputFormat.createPrettyPrint();

               /** 指定XML编码 */

               format.setEncoding("GBK");

               writer= new XMLWriter(new FileWriter(new File(filename)),format);

               writer.write(document);

               writer.close();

               /** 执行成功,需返回1 */

               returnValue = 1;

           }catch(Exception ex){

               ex.printStackTrace();

           }

           return returnValue;

        }



    public static void main(String[] args) {

       Dom4jDemo temp = new Dom4jDemo();
       temp.createXMLFile("e://myxml.xml");
       //temp.formatXMLFile("e://myxml.xml");
       //temp.ModiXMLFile("e://myxml.xml", "e://myxml2.xml");

       //System.out.println(temp.createXMLFile("d://testxml.xml"));
      
       //System.out.println(temp.ModiXMLFile("d://testxml.xml","d://testxml2.xml"));
//       try{
         //System.out.println(temp.formatXMLFile("d://testxml2.xml"));
//        // System.out.println(temp.formatXMLFile("E:\\test.xml"));
//       }
//       catch(Exception e)
//       {
//        // e.printStackTrace();
//        System.out.print("error!");
//
//    }

    }
}
页: [1]
查看完整版本: java 创建与解析XML文件