日期:2014-05-20  浏览次数:20854 次

dom4j 解析 xml的问题
这个是xml文件
XML code

  <?xml version="1.0" encoding="UTF-8" ?> 
  <!DOCTYPE root (View Source for full doctype...)> 
- <!-- this is the first xml created by dom4j!
  --> 
- <root name="root">
- <!-- the root
  --> 
  this is the root's content! 
- <child name="first">
- <!-- first child
  --> 
  the first child element! 
  </child>
- <child name="second">
- <!-- second child
  --> 
  the second child element! 
  </child>
  </root>



我用下面的程序 读取:
Java code

package iterate;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class printXml {

    @SuppressWarnings("unchecked")
    public static void main(String[] argv) {
        final String filename = "D:/firstXml.xml";

        try {
            
            SAXReader saxReader = new SAXReader(); //这里抛出异常,异常在下面列出
            FileReader file = new FileReader(filename);

            Document doc = saxReader.read(file);
            System.out.println(filename);
            List list = doc.selectNodes("/root/child");
            Iterator iter = list.iterator();
            while (iter.hasNext()){
                //System.out.println(filename);
                Element childElem = (Element)iter.next();
                System.out.println(childElem.getText());
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    }
}


抛出异常:
org.dom4j.DocumentException: D Nested exception: D
at org.dom4j.io.SAXReader.read(SAXReader.java:484)
at org.dom4j.io.SAXReader.read(SAXReader.java:365)
at iterate.printXml.main(printXml.java:24)
Nested exception: 
java.net.UnknownHostException: D
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.NetworkClient.openServer(NetworkClient.java:118)
at sun.net.ftp.FtpClient.openServer(FtpClient.java:488)
at sun.net.ftp.FtpClient.openServer(FtpClient.java:475)
at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:270)
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:352)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1316)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1283)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1168)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1068)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:988)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)