Ich habe eine XML-Datei in meinem Ressourcen-Ordner. Dies ist, was ich habe versucht:DocumentBuilder gibt java.net.MalformedURLException: no!/In spec
zuerst die Datei aus dem Ordner Ressourcen erhalten:
ClassLoader classLoader = ParseXML.class.getClassLoader();
File file = new File(classLoader.getResource("sample.xml").getFile());
dann die DOM Parse verwenden, um die Datei zu lesen:
DocumentBuilder dBuilder = null;
Document doc =null;
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dBuilder = dbFactory.newDocumentBuilder();
doc = dBuilder.parse(file)
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
Es hält mich geben " java.net.MalformedURLException: no!/in spec ". Was mache ich falsch?
Ich habe auch versucht, dies zu tun:
fileAsString = IOUtils.toString(classLoader.getResourceAsStream("sample.xml"));
doc = dBuilder.parse(new InputSource(new ByteArrayInputStream(fileAsString.getBytes("utf-8"))));
aber Fehler bleibt gleich. Jede Hilfe wird geschätzt. Danke.
Wie gewünscht, einschließlich der Stack-Trace:
java.net.MalformedURLException: no !/ in spec
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at com.northwestern.XMLParse.ParseXML.main(ParseXML.java:47)
Caused by: java.lang.NullPointerException: no !/ in spec
at sun.net.www.protocol.jar.Handler.parseAbsoluteSpec(Unknown Source)
at sun.net.www.protocol.jar.Handler.parseURL(Unknown Source)
... 18 more
Konto Bitte geben Sie die gesamte Stack-Trace der Ausnahme in Ihre Frage. – VGR
@VGR Ich habe jetzt die Stack-Trace enthalten. Vielen Dank. – user3044240
Dieser Stack-Trace schlägt vor, dass Ihre Datei 'sample.xml' auf eine ungültige URL in der DTD verweist. Können Sie den DTD-Teil des XML-Codes auch in Ihre Frage einfügen? – VGR