代码如下: 
 package com.willpower.parsexml;
package com.willpower.parsexml;

 import java.io.File;
import java.io.File;
 import java.io.FileWriter;
import java.io.FileWriter;
 import java.io.IOException;
import java.io.IOException;
 import java.util.Iterator;
import java.util.Iterator;
 import java.util.List;
import java.util.List;

 import org.dom4j.Attribute;
import org.dom4j.Attribute;
 import org.dom4j.Document;
import org.dom4j.Document;
 import org.dom4j.DocumentException;
import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
import org.dom4j.DocumentHelper;
 import org.dom4j.Element;
import org.dom4j.Element;
 import org.dom4j.io.OutputFormat;
import org.dom4j.io.OutputFormat;
 import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
import org.dom4j.io.XMLWriter;


 public class ParseXml
public class ParseXml  {
{


 /** *//**
    /** *//**
 * 创建XML文件
     * 创建XML文件
 * @author cnyqiao@hotmail.com
     * @author cnyqiao@hotmail.com
 * @param fileName
     * @param fileName
 * @date Jul 10, 2006 3:34:58 PM
     * @date Jul 10, 2006 3:34:58 PM
 * @return rtn true or false
     * @return rtn true or false
 */
     */

 public boolean createXMLFile(String fileName)
    public boolean createXMLFile(String fileName)  {
{
 boolean rtn = false;
        boolean rtn = false;
 // 使用DocumentHelper.createDocument方法建立一个文档实例
        // 使用DocumentHelper.createDocument方法建立一个文档实例
 Document document = DocumentHelper.createDocument();
        Document document = DocumentHelper.createDocument();
 // 使用addElement方法方法创建根元素
        // 使用addElement方法方法创建根元素
 Element catalogElement = document.addElement("catalog");
        Element catalogElement = document.addElement("catalog");
 // 使用addComment方法方法向catalog元素添加注释
        // 使用addComment方法方法向catalog元素添加注释
 catalogElement.addComment("An XML cataog");
        catalogElement.addComment("An XML cataog");
 // 使用addProcessInstruction向catalog元素增加处理指令
        // 使用addProcessInstruction向catalog元素增加处理指令
 catalogElement.addProcessingInstruction("target", "text");
        catalogElement.addProcessingInstruction("target", "text");

 // 使用addElement方法向catalog元素添加journal子元素
        // 使用addElement方法向catalog元素添加journal子元素
 Element journalElement = catalogElement.addElement("journal");
        Element journalElement = catalogElement.addElement("journal");
 // 使用addAttribute方法向journal元素添加title和publisher属性
        // 使用addAttribute方法向journal元素添加title和publisher属性
 journalElement.addAttribute("title", "XML Zone");
        journalElement.addAttribute("title", "XML Zone");
 journalElement.addAttribute("publisher", "Willpower Co");
        journalElement.addAttribute("publisher", "Willpower Co");

 // 使用addElement方法向journal元素添加article子元素
        // 使用addElement方法向journal元素添加article子元素
 Element articleElement = journalElement.addElement("article");
        Element articleElement = journalElement.addElement("article");
 // 使用addAttribute方法向article元素添加level和date属性
        // 使用addAttribute方法向article元素添加level和date属性
 articleElement.addAttribute("level", "Intermediate");
        articleElement.addAttribute("level", "Intermediate");
 articleElement.addAttribute("date", "July-2006");
        articleElement.addAttribute("date", "July-2006");

 // 使用addElement方法向article元素添加title子元素
        // 使用addElement方法向article元素添加title子元素
 Element titleElement = articleElement.addElement("title");
        Element titleElement = articleElement.addElement("title");
 // 使用setText方法设置title子元素的值
        // 使用setText方法设置title子元素的值
 titleElement.setText("Dom4j Create XML Schema");
        titleElement.setText("Dom4j Create XML Schema");

 // 使用addElement方法向article元素添加authorElement子元素
        // 使用addElement方法向article元素添加authorElement子元素
 Element authorElement = articleElement.addElement("author");
        Element authorElement = articleElement.addElement("author");

 // 使用addElement方法向author元素添加firstName子元素
        // 使用addElement方法向author元素添加firstName子元素
 Element firstName = authorElement.addElement("fistname");
        Element firstName = authorElement.addElement("fistname");
 // 使用setText方法设置firstName子元素的值
        // 使用setText方法设置firstName子元素的值
 firstName.setText("Yi");
        firstName.setText("Yi");

 // 使用addElement方法向author元素添加lastname子元素
        // 使用addElement方法向author元素添加lastname子元素
 Element lastName = authorElement.addElement("lastname");
        Element lastName = authorElement.addElement("lastname");
 // 使用setText方法设置lastName子元素的值
        // 使用setText方法设置lastName子元素的值
 lastName.setText("Qiao");
        lastName.setText("Qiao");

 XMLWriter output;
        XMLWriter output;
 //输出格式化
        //输出格式化
 OutputFormat format = OutputFormat.createPrettyPrint();
        OutputFormat format = OutputFormat.createPrettyPrint();

 try
        try  {
{
 output = new XMLWriter(new FileWriter(fileName), format);
            output = new XMLWriter(new FileWriter(fileName), format);
 output.write(document);
            output.write(document);
 output.close();
            output.close();
 rtn = true;
            rtn = true;

 } catch (IOException e)
        } catch (IOException e)  {
{
 e.printStackTrace();
            e.printStackTrace();
 }
        }

 return rtn;
        return rtn;
 }
    }


 /** *//**
    /** *//**
 * 修改XML文件
     * 修改XML文件
 * @author cnyqiao@hotmail.com
     * @author cnyqiao@hotmail.com
 * @param fileName
     * @param fileName
 * @param newFileName
     * @param newFileName
 * @date Jul 10, 2006 4:03:33 PM
     * @date Jul 10, 2006 4:03:33 PM
 * @return
     * @return
 */
     */

 public boolean modiXMLFile(String fileName, String newFileName)
    public boolean modiXMLFile(String fileName, String newFileName)  {
{
 
        
 boolean rtn = false;
        boolean rtn = false;
 
        
 SAXReader reader = new SAXReader();
        SAXReader reader = new SAXReader();

 try
        try  {
{
 Document document = reader.read(new File(fileName));
            Document document = reader.read(new File(fileName));
 //用xpath查找对象
            //用xpath查找对象
 List list = document.selectNodes("/catalog/journal/@title");
            List list = document.selectNodes("/catalog/journal/@title");
 Iterator itr = list.iterator();
            Iterator itr = list.iterator();

 while(itr.hasNext())
            while(itr.hasNext())  {
{
 Attribute attribute = (Attribute)itr.next();
                Attribute attribute = (Attribute)itr.next();

 if(attribute.getValue().equals("XML Zone"))
                if(attribute.getValue().equals("XML Zone"))  {
{
 attribute.setText("Modi XML");
                    attribute.setText("Modi XML");
 }
                }
 }
            }
 //在journal元素中增加date元素
            //在journal元素中增加date元素
 list = document.selectNodes("/catalog/journal");
            list = document.selectNodes("/catalog/journal");
 itr = list.iterator();
            itr = list.iterator();

 if(itr.hasNext())
            if(itr.hasNext())  {
{
 Element journalElement = (Element)itr.next();
                Element journalElement = (Element)itr.next();
 Element dateElement = journalElement.addElement("date");
                Element dateElement = journalElement.addElement("date");
 dateElement.setText("2006-07-10");
                dateElement.setText("2006-07-10");
 dateElement.addAttribute("type", "Gregorian calendar");
                dateElement.addAttribute("type", "Gregorian calendar");
 }
            }
 //删除title接点
            //删除title接点
 list = document.selectNodes("/catalog/journal/article");
            list = document.selectNodes("/catalog/journal/article");
 itr = list.iterator();
            itr = list.iterator();

 while(itr.hasNext())
            while(itr.hasNext())  {
{
 Element articleElement = (Element)itr.next();
                Element articleElement = (Element)itr.next();
 Iterator iter = articleElement.elementIterator("title");
                Iterator iter = articleElement.elementIterator("title");

 while(iter.hasNext())
                while(iter.hasNext())  {
{
 Element titleElement = (Element)iter.next();
                    Element titleElement = (Element)iter.next();

 if(titleElement.getText().equals("Dom4j Create XML Schema"))
                    if(titleElement.getText().equals("Dom4j Create XML Schema"))  {
{
 articleElement.remove(titleElement);
                        articleElement.remove(titleElement);
 }
                    }
 }
                }
 }
            }
 XMLWriter output;
            XMLWriter output;
 OutputFormat format = OutputFormat.createPrettyPrint();
            OutputFormat format = OutputFormat.createPrettyPrint();

 try
            try  {
{
 output = new XMLWriter(new FileWriter(newFileName), format);
                output = new XMLWriter(new FileWriter(newFileName), format);
 output.write(document);
                output.write(document);
 output.close();
                output.close();
 rtn = true;
                rtn = true;

 } catch (IOException e)
            } catch (IOException e)  {
{
 e.printStackTrace();
                e.printStackTrace();
 }
            }
 
            
 
            

 } catch (DocumentException e)
        } catch (DocumentException e)  {
{            
 e.printStackTrace();
            e.printStackTrace();
 }
        }
 
        
 return rtn;
        return rtn;
 
        
 }
    }

 /** *//**
    /** *//**
 * @param args
     * @param args
 */
     */

 public static void main(String[] args)
    public static void main(String[] args)  {
{
 
        
 ParseXml parseXml = new ParseXml();
        ParseXml parseXml = new ParseXml();
 String fileName = "d:\\dom4j.xml";
        String fileName = "d:\\dom4j.xml";
 String newFileName = "d:\\modi.xml";
        String newFileName = "d:\\modi.xml";

 if(parseXml.createXMLFile(fileName))
        if(parseXml.createXMLFile(fileName))  {
{
 System.out.println("Create XML File Success
            System.out.println("Create XML File Success
 ");
");
 }
        }
 
        

 if(parseXml.modiXMLFile(fileName, newFileName))
        if(parseXml.modiXMLFile(fileName, newFileName))  {
{
 System.out.println("Modify XML File Success
            System.out.println("Modify XML File Success
 ");
");
 }
        }

 }
    }

 }
}

在修改XML时,需要用到jaxen-1.1-beta-6.jar,这里
http://sourceforge.net/project/showfiles.php?group_id=16035&package_id=14121&release_id=328664下载,记住下那个zip包啊,这个包里的lib下有上面提到的那个文件,放在classpath下即可
不然会报ClassNotFound异常
	
posted on 2006-07-10 17:51 
一凡 阅读(10993) 
评论(3)  编辑  收藏  所属分类: 
XML