2011-10-24 66 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。我從來沒有發展過,所以我不會猜測你能做什麼,不能做什麼。 –