Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用SAX打开XML文件_Java_Xml_Sax - Fatal编程技术网

Java 用SAX打开XML文件

Java 用SAX打开XML文件,java,xml,sax,Java,Xml,Sax,我想打开一个本地xml文件来解析它。 所以我有一行:saxReader.parse(“file.xml”) 我发现这个错误openfailed:enoint(没有这样的文件或目录) 因此,我试图通过提供一个完整路径来解决这个问题,比如C:/…/file.xml 但也有同样的问题 我应该将file.xml放在项目中的什么位置来解决问题 谢谢您正在使用XMLReader。您可以使用它,但在Java中,您最好使用javax.xml.parsers包中的东西。使用SAXParserFactory.new

我想打开一个本地xml文件来解析它。 所以我有一行:
saxReader.parse(“file.xml”)
我发现这个错误
openfailed:enoint(没有这样的文件或目录)
因此,我试图通过提供一个完整路径来解决这个问题,比如C:/…/file.xml 但也有同样的问题

我应该将file.xml放在项目中的什么位置来解决问题


谢谢

您正在使用
XMLReader
。您可以使用它,但在Java中,您最好使用
javax.xml.parsers
包中的东西。使用
SAXParserFactory.newInstance()
创建一个
SAXParserFactory
,对其进行配置,然后对其调用
newSAXParser()
。只有在绝对必须使用该实现的情况下,才能像您这样提供类名。否则,最好让默认的查找机制来处理这个问题。至于实际问题,请学习并使用它,或者获取
文件
实例或
InputStream
InputSource
并将其传递给读取器或解析器。

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

saxReader
的一个实例吗
javax.xml.parsers.SAXParser
?如何准确地调用
parse
?没有这样一个只有一个参数的方法,您还必须提供一个处理程序。为文件传入字符串时,该字符串必须是文件的URI。了解正确形式的URI语法。我认为在通过常规方法定位文件后,最好使用一种方法的变体,该方法采用
文件
输入流
输入源
。正如@G_H已经指出的,请提供更多代码(以及异常堆栈跟踪)。
saxReader=XMLReaderFactory.createXMLReader(“org.apache.xerces.parsers.SAXParser”);simpleContentHandler=new simpleContentHandler();saxReader.setContentHandler(simpleContentHandler);saxReader.parse(“file.xml”);
这是我的代码啊,这是一个
XMLReader
。请看下面的答案。现在我使用的是SAXParserFactory,但我也遇到了同样的问题。我尝试了如下路径:
file:///C:/Java/file.xml
我尝试使用
输入源(“file:///C:/Java/file.xml")
Hmm,看起来还可以。也许可以尝试使用小写的
c:
。否则,我建议您创建一个路径为
c:/Java/File.xml
File
对象,然后使用该对象。如果xml源始终位于本地文件系统上,那么应该可以使用该对象。现在我这样做:
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/引文\ u jour.xml:open失败:enoint(没有这样的文件或目录)只需执行
file f=new file(“C:/Java/file.xml”);
(或您正在使用的任何路径),然后使用
SAXParser
方法
parse(f,handler)
与您的处理程序一起使用。解析器通常应该能够检测编码。尝试使用这方面最简单的方法。问题仍然存在。我忘了提到我正在开发Android SDK,可能与问题有关。已经说过一段时间了。但显然这是Android SDK。我从未开发过所以我不会猜你在那里能做什么,不能做什么。