Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Android 解析存储在内存中的XML_Android_Xml - Fatal编程技术网

Android 解析存储在内存中的XML

Android 解析存储在内存中的XML,android,xml,Android,Xml,我已经在内部存储器中创建了一个名为“temp.gpx”的XML文件,现在我想解析它。我用这个方法来解析和获取GPS坐标以及其他一些东西。检测到DOCUMENT_START(它的Log.d行被写入),但是我得到了一个异常,不知道是哪一行引起的 例外情况是“无法添加窗口:令牌null不适用于应用程序”。Log.d(标记“next”)从未写入 private void procesarGPX() throws XmlPullParserException, IOException {

我已经在内部存储器中创建了一个名为“temp.gpx”的XML文件,现在我想解析它。我用这个方法来解析和获取GPS坐标以及其他一些东西。检测到DOCUMENT_START(它的Log.d行被写入),但是我得到了一个异常,不知道是哪一行引起的

例外情况是“无法添加窗口:令牌null不适用于应用程序”。Log.d(标记“next”)从未写入

    private void procesarGPX() throws XmlPullParserException, IOException {

   String tag = new String();
   float lat, lon;
   trackData = new TrackData(true, true);

   FileInputStream leerFichero = getApplicationContext().openFileInput("temp.gpx");

   XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
   factory.setNamespaceAware(true);
   XmlPullParser xpp = factory.newPullParser();
   xpp.setInput(leerFichero, null);

   int eventType = xpp.getEventType();
   while (eventType != XmlPullParser.END_DOCUMENT){
       if(eventType == XmlPullParser.START_DOCUMENT){
           Log.d(TAG, "START_DOC");
       }
       else if(eventType == XmlPullParser.START_TAG){
           Log.d(TAG, "START_TAG");
            tag = xpp.getName();
            if(tag.equals("name")) boolName = true;
            else if(tag.equals("trkpt")){
                lat = Float.parseFloat(xpp.getAttributeValue(null, "lat"));
                lon = Float.parseFloat(xpp.getAttributeValue(null, "lon"));
                if(lat*(-1)<=180 && lon*(-1)<=180) trackData.addPoint(new GeoPoint((int)(lat*1E6), (int)(lon*1E6)));
            }
            else if(tag.equals("ele")) boolEle = true;
            else if(tag.equals("time")) boolTime = true;
            else if(tag.equals("gpx")){
                Log.d(TAG, "START_TAG es del tipo gpx");
                trackData.setAutor(xpp.getAttributeValue(null, "creator"));
                trackData.setVersion(xpp.getAttributeValue(null, "version"));
            }
        }
        else if(eventType == XmlPullParser.END_TAG){
            Log.d(TAG, "END_TAG");
            if(tag.equals("name")) boolName = false;
            else if(tag.equals("ele")) boolEle = false;
            else if(tag.equals("time")) boolTime = false;
        }
        else if(eventType == XmlPullParser.TEXT){
            Log.d(TAG, "TEXT");
            if(boolName) trackData.setName(xpp.getText());
            else if(boolEle) trackData.addElevationValue(Float.parseFloat(xpp.getText()));
            else if(boolTime) parseTime(xpp.getText());
        }
        eventType = xpp.next();Log.d(TAG, "next()");
   }

   Log.d(TAG, "GPX processed");

   Intent mapaIntent = new Intent(this, pfc.uniovi.MapaActivity.class);
   startActivity(mapaIntent);
 }
private void procesarGPX()抛出XmlPullParserException,IOException{
字符串标记=新字符串();
浮动lat,lon;
trackData=新的trackData(真,真);
FileInputStream leerFichero=getApplicationContext().openFileInput(“temp.gpx”);
XmlPullParserFactory工厂=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp=factory.newPullParser();
xpp.setInput(leerFichero,null);
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START\u文档){
Log.d(标签“开始文档”);
}
else if(eventType==XmlPullParser.START_标记){
Log.d(标签“开始标签”);
tag=xpp.getName();
如果(tag.equals(“name”))boolName=true;
else if(标记等于(“trkpt”)){
lat=Float.parseFloat(xpp.getAttributeValue(null,“lat”);
lon=Float.parseFloat(xpp.getAttributeValue(null,“lon”);

如果(lat*(-1)代码是正确的。经过大量调试,我看到它崩溃了,因为第一行仍然不是XML行。只要您只传递XML行,代码就可以工作。我会接受答案,以便需要代码的任何人都能得到它