2013-07-05 41 views
-1

我必须读取我的android应用程序中的xml文件才能从中获取数据。我之前问过问题,发现我需要使用解析器。使用谷歌我设法找到办法做到这一点,但对我来说一些未知的原因,我的文件甚至不会阅读。我在做文件路径有问题吗?我已经用文件路径尝试了许多不同的方式,但都导致相同的IO异常。另外测试.exists()返回false:/,它确实存在,并且如果我输入与我的代码中完全相同的URL,它将出现在浏览器中。阅读Java中的XML文件,适用于Android&IntelliJ

import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.DocumentBuilder; 
import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Node; 
import org.w3c.dom.Element; 
import java.io.File; 

public class XMLReader { 

    public static void main(String argv[]) { 

     try { 

      File fXmlFile = new File("/Users/simondobson/GoogleDrive/GUESTLIST/TGN/src/com/TGN/simon/events.xml"); 
      DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
      Document doc = dBuilder.parse(fXmlFile); 
      doc.getDocumentElement().normalize(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

我在我的一项活动中像这样打电话给班级。

XMLReader xml; 
xml = new XMLReader(); 
+0

您可以添加IO异常的堆栈跟踪吗? – yiati

+0

你必须学习路径如何工作来创建任何应用程序。如果你不能,这将是令人痛苦的挫折。 – duffymo

+0

显示堆栈跟踪仍然有帮助,所以我们可以告诉你如何阅读它。如果您知道如何正确读取堆栈跟踪以及如何对其进行响应,则可以在将来更快速/更好地调试您的应用程序。 – yiati

回答

0

您的问题可能源于您在Windows操作系统上,并且文件分隔符使用反斜杠而不是正斜杠。

“对于Microsoft Windows平台,路径名的前缀 包含一个盘符由驱动器字母后跟 的‘:’和后面可能跟着‘\’,如果是绝对路径的 前缀UNC路径是“\\”;主机名和共享名 是在名称序列中的前两个名字的相对路径名 不指定驱动器没有前缀”

From the File Class API

MKYong也有a good intro tutorial使用Java中的文件类,并展示如何使您的程序在基于Windows和Unix的平台上找到正确的文件。

+0

我使用的是Mac OS X,我只是复制文件路径并粘贴。我刚刚尝试//仍然不起作用 – doblo7

+0

您确实应该阅读[File Class API](http://docs.oracle.com/javase/6/docs/api/java/io/File.html)。特别是有关使用user.dir和File.seperator的部分。阅读不会伤害:)。同时请确保您的路径具有正确的情况,因为路径区分大小写。 – yiati