Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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 我能';t在Android中使用saxParser打开XML文件_Java_Android_Xml - Fatal编程技术网

Java 我能';t在Android中使用saxParser打开XML文件

Java 我能';t在Android中使用saxParser打开XML文件,java,android,xml,Java,Android,Xml,我正在学习解析XML,在教程中我使用的是saxParser。不幸的是,有些东西不起作用。我不知道问题出在哪里 代码MainActivity.java: @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the H

我正在学习解析XML,在教程中我使用的是saxParser。不幸的是,有些东西不起作用。我不知道问题出在哪里

代码MainActivity.java:

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_parse) {
        doParsing();
        Toast.makeText(getBaseContext(), "lool", Toast.LENGTH_LONG).show();
        Log.w("XML parsin", "you choose option");
        return true;
    }
    return super.onOptionsItemSelected(item);
}

private void doParsing(){

    URL urlRequest = null;

    try {
        urlRequest = new URL("file:///mnt/sdcard/osm.xml");
    } catch (MalformedURLException e) {
    }

    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser sp;
    XMLReader xr=null;

    try {
        sp = spf.newSAXParser();
        xr = sp.getXMLReader();
    } catch (ParserConfigurationException e) {
    } catch (SAXException e) {
    }

        myExampleHandler = new ExampleHandler(); 
        xr.setContentHandler(myExampleHandler); 

        try { xr.parse(new InputSource(urlRequest.openStream())); } 
        catch (IOException e) { } 
        catch (SAXException e) { } 
}
代码ExampleHandler.java:

package com.example.parsowanie;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.util.Log;
import android.widget.Toast;

public class ExampleHandler extends DefaultHandler {

public ExampleHandler() {
    // TODO Auto-generated constructor stub
}

@Override
public void startDocument() throws SAXException {
    Log.w("XML parsin", "starting parsing document");
}

@Override
public void endDocument() throws SAXException {
    // TODO Auto-generated method stub
    super.endDocument();
}

@Override
public void startElement(String uri, String localName, String qName,
        Attributes attributes) throws SAXException {
}

@Override
public void endElement(String uri, String localName, String qName)
        throws SAXException {
    // TODO Auto-generated method stub
    super.endElement(uri, localName, qName);
}
所以我在手机SD卡上有file.xml文件。在LogCat中,我得到了

    06-03 14:57:15.603: W/XML parsin(6578): you choose option
用于选择菜单中的按钮 但是我没能够到那辆车

    Log.w("XML parsin", "starting parsing document");
这意味着应用程序无法打开我的.xml文件


有人知道问题在哪里吗

需要检查两件事:

  • 试试
    file:///sdcard/osm.xml
    而不是
    file:///mnt/sdcard/osm.xml

  • 您是否错过了
    AndroidManifest.xml
    文件中的
    READ\u EXTERNAL\u STORAGE
    权限


  • 我必须补充一点,我仔细地观看了一个教程,我做的每件事都和视频中的内容一模一样。对于视频中的人来说,一切都很好。你确定你的路径适合你的SD卡吗?我一直看到有人这样做,都是为了使用许可!谢谢