import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Attribute;
import java.util.List;
import java.util.Iterator;
import org.dom4j.io.XMLWriter;
import java.io.*;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader; public class Dom4JParser{    public void modifyDocument(File inputXml){        try{
            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(inputXml);            List list = document.selectNodes("/catalog/journal/article/@level" );
            Iterator iter=list.iterator();
            while(iter.hasNext()){
                Attribute attribute=(Attribute)iter.next();
                if(attribute.getValue().equals("Intermediate"))
                    attribute.setValue("Introductory"); 
            }
   
            list = document.selectNodes("//article/@date" );
            iter=list.iterator();
            while(iter.hasNext()){
                Attribute attribute=(Attribute)iter.next();
                if(attribute.getValue().equals("December-2001"))
                    attribute.setValue("October-2002");
            }            list = document.selectNodes("//article" );
            iter=list.iterator();
            while(iter.hasNext()){
                Element element=(Element)iter.next();
                Iterator iterator=element.elementIterator("title");
                while(iterator.hasNext()){
                    Element titleElement=(Element)iterator.next();
                    if(titleElement.getText().equals("Java configuration with XML Schema"))
                            titleElement.setText("Create flexible and extensible XML schema");
                }
            }            list = document.selectNodes("//article/author" );
            iter=list.iterator();
            while(iter.hasNext()){
                Element element=(Element)iter.next();
                Iterator iterator=element.elementIterator("firstname");
                while(iterator.hasNext()){
                    Element firstNameElement=(Element)iterator.next();
                    if(firstNameElement.getText().equals("Marcello"))
                        firstNameElement.setText("Ayesha");
                }
                
            }
            
            list = document.selectNodes("//article/author" );
            iter=list.iterator();
            while(iter.hasNext()){
                Element element=(Element)iter.next();
                Iterator iterator=element.elementIterator("lastname");
                while(iterator.hasNext()){
                    Element lastNameElement=(Element)iterator.next();
                    if(lastNameElement.getText().equals("Vitaletti"))
                        lastNameElement.setText("Malik");                }            }
            XMLWriter output = new XMLWriter(new FileWriter( new File("c:/catalog-modified.xml") ));
            output.write( document );
            output.close();
        }
        catch(DocumentException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
        catch(IOException e){
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }    public static void main(String[] argv){
        Dom4JParser dom4jParser=new Dom4JParser();
        dom4jParser.modifyDocument(new File("c:/catalog.xml"));
    }}总是抛出c Nested exception异常,问题出现在 Document document = saxReader.read(inputXml);
这行,文件是存在的,是什么原因呢?

解决方案 »

  1.   

    Document document = saxReader.read(inputXml);
    就是这一行!
      

  2.   

    应该写全 inputXml.xml 最好加上路径
      

  3.   

    inputXml是一个File类型,没问题的
      

  4.   

    dom4jParser.modifyDocument(new File("c:/catalog.xml"));
    不知道你是在什么环境下执行的,我在Windows下这行运行会出错。
    org.dom4j.DocumentException: c:\catalog.xml (系统找不到指定的文件。) Nested exce
    ption: c:\catalog.xml (系统找不到指定的文件。)
            at org.dom4j.io.SAXReader.read(SAXReader.java:266)
            at Dom4JParser.modifyDocument(Dom4JParser.java:17)
            at Dom4JParser.main(Dom4JParser.java:89)
    Nested exception:
    java.io.FileNotFoundException: c:\catalog.xml (系统找不到指定的文件。)
            at java.io.FileInputStream.open(Native Method)
            at java.io.FileInputStream.<init>(FileInputStream.java:106)
            at org.dom4j.io.SAXReader.read(SAXReader.java:243)
            at Dom4JParser.modifyDocument(Dom4JParser.java:17)
            at Dom4JParser.main(Dom4JParser.java:89)
    Nested exception: java.io.FileNotFoundException: c:\catalog.xml (系统找不到指定
    的文件。)
            at java.io.FileInputStream.open(Native Method)
            at java.io.FileInputStream.<init>(FileInputStream.java:106)
            at org.dom4j.io.SAXReader.read(SAXReader.java:243)
            at Dom4JParser.modifyDocument(Dom4JParser.java:17)
            at Dom4JParser.main(Dom4JParser.java:89)
    c:\catalog.xml (系统找不到指定的文件。) Nested exception: c:\catalog.xml (系统找
    不到指定的文件。)因为在C盘下根本就没有这个文件!