2011-10-24 68 views
0

我想打开一个本地xml文件来解析它。 所以我这条线:saxReader.parse("file.xml"); 而我有这个错误open failed: ENOENT (No such file or directory) 所以我尝试通过给一个完整路径像C:/.../ file.xml 解决它但也有同样的问题。用SAX打开XML文件

我在哪里把file.xml放到项目中来解决问题?

感谢

+0

saxReader是'javax.xml.parsers.SAXParser'的一个实例吗?你究竟怎么叫'parse'?没有一个参数的方法,你也必须提供一个处理程序。当传入文件的字符串时,该字符串必须是该文件的URI。了解适当形式的URI语法。我认为在通过常规方式找到文件后,使用一个带有“File”,“InputStream”或“InputSource”的方法的变体会更好。 –

+0

正如@G_H已经指出的那样,请提供更多代码(以及异常堆栈跟踪)。 – home

+0

'saxReader = XMLReaderFactory.createXMLReader(“org.apache.xerces.parsers.SAXParser”); simpleContentHandler = new SimpleContentHandler(); saxReader.setContentHandler(simpleContentHandler); saxReader.parse(“file.xml”);' 这是我的代码 – guillaume

回答

0

您使用的XMLReader。你可以使用它,但在Java中,你最好使用javax.xml.parsers包中的东西。使用SAXParserFactory.newInstance()创建一个SAXParserFactory,配置它,然后调用newSAXParser()就可以了。如果您绝对必须使用该实现,则只需提供类似名称即可。否则,最好让默认查找机制处理它。至于实际问题,请学习URI syntax for files并使用它,或者获取File实例或InputStreamInputSource,并将其传递给读取器或解析器。

+0

现在我正在使用SAXParserFactory,但我有同样的问题。我尝试使用'InputSource(“file:/// C:/Java/file.xml”)' – guillaume

+0

嗯,那样的路径就像'file:/// C:/ Java/file.xml'虽然看起来不错。也许尝试用小写'c:'。否则,我建议你创建一个'File'对象,路径为'C:/ Java/file.xml'并使用该对象。如果XML源始终位于本地文件系统上,则应该起作用。 –

+0

现在我是这样做的: 'String xmlUri =“file:/// g:/Java/Guigui/src/file.xml”; InputSource inputSource = new InputSource(new FileInputStream(new File(xmlUri)));}};}};}}; inputSource.setSystemId(xmlUri); xmlReader.parse(inputSource);' 但总是打开失败10-24 13:13:55.350:V/debug(2014):IOException:/file:/g:/Java/Guigui/src/citation_jour.xml :打开失败:ENOENT(没有这样的文件或目录) – guillaume

0

如果将字符串传递给XMLReader.parse(),它应该是完全解析的(即绝对)URL。 file.xml不是绝对URL(它是相对的)。 c:\dir\dir\file.xml也不是绝对URL - 它是一个Windows文件名。如果您不了解URL并且不习惯使用它们,那么传递Java文件就更简单了:parse(new InputSource(new File('file.xml')))

+0

一直这么说。但显然它是Android SDK。我从来没有发展过,所以我不会猜测你能做什么,不能做什么。 –