It looks that there are problems with handling Windows UNC path (a path in the format 
of \\computer\share\filename).  I would like to seek help on how to solve the problem.

For the DocumentBuilder.parse() method, if a UNC path name is specified as the 
parameter, it will fail will error 'java.net.MalformedURLException: no protocol'.
I have to use 'DocumentBuilder.parse(new File(uncPath))'.  Then it got problems with 
find DTD file that the XML file uses:
<!DOCTYPE Users SYSTEM "Users.dtd">
The error is:
'Connection refused: connect'.  From the stack trace, it looks that it trys to find 
the DTD file using FTP.

I tried two approaches.  1. set validating to false, but it looks that it still try to 
find the DTD file.  2. Using EntityResolver to resolve the DTD file, but it looks that 
the EntityResolver is never called (the print statement doesn't print anything).  Why 
is this not called?

How can I solve the problem?

The sample code is enclosed.

xerces-j version I used is 2.0.2.

Thanks.


import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.Serializer;
import org.apache.xml.serialize.SerializerFactory;
import org.apache.xml.serialize.XMLSerializer;

public class TestDOM {
    static public void main(String args[])
    {
        try {
            DocumentBuilderFactory docBuilderFactory = 
DocumentBuilderFactory.newInstance();
            docBuilderFactory.setValidating(false);
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            docBuilder.setEntityResolver(new MyEntityResolver());
//          Document m_domDocument = docBuilder.parse(args[0]);
            Document m_domDocument = docBuilder.parse(new java.io.File(args[0]));
        } catch (ParserConfigurationException exn) {
            System.err.println("Got ParserConfigurationException: " + 
exn.getMessage());
        } catch (SAXException exn) {
            System.err.println("Got SAXException: " + exn.getMessage());
        } catch (java.io.IOException exn) {
            System.err.println("Got IOException: " + exn.getMessage());
            exn.printStackTrace();
        }
    }
}

class MyEntityResolver implements EntityResolver {
   public InputSource resolveEntity(String publicId, String systemId)
       throws SAXException, java.io.IOException
   {
       System.out.println("MyEntityResolver: " + systemId);
       java.io.FileInputStream fs = new java.io.FileInputStream(systemId);
       return new InputSource(fs);
   }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to