Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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到arraylist_Android_Xml Parsing_Here Api - Fatal编程技术网

在Android中解析XML到arraylist

在Android中解析XML到arraylist,android,xml-parsing,here-api,Android,Xml Parsing,Here Api,我试图创建一个要存储的数据列表/数组,并将其作为输入发送到函数。但是我做不到,有人能帮我吗。 我是安德里奥德开发公司的新手 MainActivity.java package com.example.xmlread; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import android.util.Log; import o

我试图创建一个要存储的数据列表/数组,并将其作为输入发送到函数。但是我做不到,有人能帮我吗。 我是安德里奥德开发公司的新手

MainActivity.java

package com.example.xmlread;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.util.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.IOException;
import java.io.InputStream;
 import java.util.ArrayList;

   public class MainActivity extends AppCompatActivity {
   TextView tv1;

   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv1=(TextView)findViewById(R.id.textView1);
    XmlPullParserFactory pullParserFactory;


    try {
        pullParserFactory = XmlPullParserFactory.newInstance();
        XmlPullParser parser = pullParserFactory.newPullParser();

        InputStream in_s = 
   getApplicationContext().getAssets().open("demo.xml");
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);

        parser.setInput(in_s, null);
        ArrayList<FIS> fis=  parseXML(parser);
        String text = "";
        for(FIS fi:fis)
        {

            text+= "Route : "+fi.getDE()+" Distance(KM) : "+fi.getLE()+" 
   Traffic Jam : "+fi.getJF()+"Speed"+fi.getSP()+"\n";
        }
        Log.d("text",text);
        tv1.setText(text);

    } catch (XmlPullParserException e) {

        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 }

   private ArrayList<FIS> parseXML(XmlPullParser parser) throws 
  XmlPullParserException,IOException
   {
    ArrayList<FIS> fis = null;
    int eventType = parser.getEventType();
    FIS fi = null;

    while (eventType != XmlPullParser.END_DOCUMENT){
        String de;
        switch (eventType){
            case XmlPullParser.START_DOCUMENT:
                fis = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                //de = parser.getDE();
                 if (fi != null){
                    if (fi.equals("DE")){
                        fi.DE = parser.nextText();
                    } else if (fi.equals("LE")){
                        fi.LE = parser.nextText();
                    }
                    else if (fi.equals("JF")){
                        fi.JF = parser.nextText();
                    }
                    else if (fi.equals("SP")){
                        fi.SP = parser.nextText();
                    }

                }
                break;

        }
        eventType = parser.next();
    }

    return fis;

  }

  }
 ArrayList<Fuel> fueldata=  parseXML(parser);
        ArrayList<String> len = null;
                len = new ArrayList();
        ArrayList<String> jf = null;
        jf = new ArrayList();
        ArrayList<String> speed = null;
        speed = new ArrayList();


        String text="";
        for(Fuel mapdata:fueldata)
        {
            len.add(mapdata.getLE());
            jf.add(mapdata.getJF());
            speed.add(mapdata.getSP());

        }

        text = Fuel_Economy(len,jf,speed);
        textView.setText(text);
package com.example.xmlread;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.TextView;
导入android.util.Log;
导入org.xmlpull.v1.XmlPullParser;
导入org.xmlpull.v1.XmlPullParserException;
导入org.xmlpull.v1.XmlPullParserFactory;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
文本视图tv1;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
XmlPullParserFactory pullParserFactory;
试一试{
pullParserFactory=XmlPullParserFactory.newInstance();
XmlPullParser=pullParserFactory.newPullParser();
InputStream in_s=
getApplicationContext().getAssets().open(“demo.xml”);
setFeature(XmlPullParser.FEATURE_进程_名称空间,false);
setInput(in_s,null);
ArrayList fis=parseXML(解析器);
字符串文本=”;
对于(金融机构金融机构:金融机构)
{
text++“路线:+fi.getDE()+”距离(公里):“+fi.getLE()+”
交通堵塞:“+fi.getJF()+”速度“+fi.getSP()+”\n”;
}
Log.d(“文本”,文本);
tv1.setText(文本);
}catch(XMLPullParseRexE){
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
私有ArrayList parseXML(XmlPullParser)抛出
XmlPullParserException,IOException
{
ArrayList fis=null;
int eventType=parser.getEventType();
FIS-fi=null;
while(eventType!=XmlPullParser.END_文档){
字符串de;
开关(事件类型){
案例XmlPullParser.START_文档:
fis=新的ArrayList();
打破
case XmlPullParser.START_标记:
//de=parser.getDE();
如果(fi!=null){
如果(fi.等于(“DE”)){
fi.DE=parser.nextText();
}如果(fi.等于(“LE”)){
fi.LE=parser.nextText();
}
如果(fi.等于(“JF”)){
fi.JF=parser.nextText();
}
如果(fi等于(“SP”)){
fi.SP=parser.nextText();
}
}
打破
}
eventType=parser.next();
}
返回fis;
}
}
此xml文件也已添加到资产文件夹中。 MyXML文件是:

<?xml version='1.0' encoding='UTF-8'?>
<TRAFFICML_REALTIME xmlns="http://traffic.nokia.com/trafficml-flow-3.2" 
CREATED_TIMESTAMP="2019-03-19T11:54:51Z" MAP_VERSION="" UNITS="metric" 
VERSION="3.2">
<RWS TY="TMC" MAP_VERSION="201901" EBU_COUNTRY_CODE="5" 
  EXTENDED_COUNTRY_CODE="F2" TABLE_ID="3" UNITS="metric">
    <RW LI="503-00011" DE="100 Feet Main Road" PBT="2019-03-19T11:54:49Z" 
    mid="4e2460ff-07bb-44a1-844a-3f9772b0165b">
        <FIS>
            <FI>
                <TMC PC="14" DE="jnhddggfg" QD="+" LE="0.05949"/>
                <CF CN="0.7" FF="27.0" JF="7.55161" SP="10.0" SU="10.0" 
   TY="TR"/>
            </FI>
            <FI>
                <TMC PC="13" DE="29th Main Road" QD="+" LE="0.77418"/>
                <CF CN="0.7" FF="28.0" JF="7.80008" SP="10.0" SU="10.0" 
     TY="TR"/>
            </FI>
            <FI>
                <TMC PC="12" DE="28th Main Road" QD="+" LE="0.0493"/>
                <CF CN="0.7" FF="26.0" JF="5.61675" SP="13.0" SU="13.0" 
   TY="TR"/>
            </FI>
        </FIS>
    </RW>
 <RW LI="503-00011" DE="100 Feet Main Road" PBT="2019-03-19T11:54:49Z" 
   mid="4e2460ff-07bb-44a1-844a-3f9772b0165b">
        <FIS>
            <FI>
                <TMC PC="14" DE="jnhddggfg" QD="+" LE="0.05949"/>
                <CF CN="0.7" FF="27.0" JF="7.55161" SP="10.0" SU="10.0" 
         TY="TR"/>
            </FI>
            <FI>
                <TMC PC="13" DE="29th Main Road" QD="+" LE="0.77418"/>
                <CF CN="0.7" FF="28.0" JF="7.80008" SP="10.0" SU="10.0" 
                TY="TR"/>
            </FI>
            <FI>
                <TMC PC="12" DE="28th Main Road" QD="+" LE="0.0493"/>
                <CF CN="0.7" FF="26.0" JF="5.61675" SP="13.0" SU="13.0" 
 TY="TR"/>
            </FI>
        </FIS>
    </RW>
    </RWS>
    </TRAFFICML_REALTIME>

我希望这些存储在XML中的数据能够在Android中显示并存储到arraylist中

提前感谢。

解决方案是:

MainActivity.java

package com.example.xmlread;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.util.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.IOException;
import java.io.InputStream;
 import java.util.ArrayList;

   public class MainActivity extends AppCompatActivity {
   TextView tv1;

   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv1=(TextView)findViewById(R.id.textView1);
    XmlPullParserFactory pullParserFactory;


    try {
        pullParserFactory = XmlPullParserFactory.newInstance();
        XmlPullParser parser = pullParserFactory.newPullParser();

        InputStream in_s = 
   getApplicationContext().getAssets().open("demo.xml");
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);

        parser.setInput(in_s, null);
        ArrayList<FIS> fis=  parseXML(parser);
        String text = "";
        for(FIS fi:fis)
        {

            text+= "Route : "+fi.getDE()+" Distance(KM) : "+fi.getLE()+" 
   Traffic Jam : "+fi.getJF()+"Speed"+fi.getSP()+"\n";
        }
        Log.d("text",text);
        tv1.setText(text);

    } catch (XmlPullParserException e) {

        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 }

   private ArrayList<FIS> parseXML(XmlPullParser parser) throws 
  XmlPullParserException,IOException
   {
    ArrayList<FIS> fis = null;
    int eventType = parser.getEventType();
    FIS fi = null;

    while (eventType != XmlPullParser.END_DOCUMENT){
        String de;
        switch (eventType){
            case XmlPullParser.START_DOCUMENT:
                fis = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                //de = parser.getDE();
                 if (fi != null){
                    if (fi.equals("DE")){
                        fi.DE = parser.nextText();
                    } else if (fi.equals("LE")){
                        fi.LE = parser.nextText();
                    }
                    else if (fi.equals("JF")){
                        fi.JF = parser.nextText();
                    }
                    else if (fi.equals("SP")){
                        fi.SP = parser.nextText();
                    }

                }
                break;

        }
        eventType = parser.next();
    }

    return fis;

  }

  }
 ArrayList<Fuel> fueldata=  parseXML(parser);
        ArrayList<String> len = null;
                len = new ArrayList();
        ArrayList<String> jf = null;
        jf = new ArrayList();
        ArrayList<String> speed = null;
        speed = new ArrayList();


        String text="";
        for(Fuel mapdata:fueldata)
        {
            len.add(mapdata.getLE());
            jf.add(mapdata.getJF());
            speed.add(mapdata.getSP());

        }

        text = Fuel_Economy(len,jf,speed);
        textView.setText(text);
ArrayList-fueldata=parseXML(解析器);
ArrayList len=null;
len=新的ArrayList();
ArrayList jf=null;
jf=新的ArrayList();
ArrayList速度=零;
速度=新的ArrayList();
字符串文本=”;
用于(燃料地图数据:燃料数据)
{
add(mapdata.getLE());
add(mapdata.getJF());
add(mapdata.getSP());
}
text=燃油经济性(len、jf、速度);
textView.setText(text);
解决方案是:

MainActivity.java

package com.example.xmlread;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.util.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.IOException;
import java.io.InputStream;
 import java.util.ArrayList;

   public class MainActivity extends AppCompatActivity {
   TextView tv1;

   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv1=(TextView)findViewById(R.id.textView1);
    XmlPullParserFactory pullParserFactory;


    try {
        pullParserFactory = XmlPullParserFactory.newInstance();
        XmlPullParser parser = pullParserFactory.newPullParser();

        InputStream in_s = 
   getApplicationContext().getAssets().open("demo.xml");
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);

        parser.setInput(in_s, null);
        ArrayList<FIS> fis=  parseXML(parser);
        String text = "";
        for(FIS fi:fis)
        {

            text+= "Route : "+fi.getDE()+" Distance(KM) : "+fi.getLE()+" 
   Traffic Jam : "+fi.getJF()+"Speed"+fi.getSP()+"\n";
        }
        Log.d("text",text);
        tv1.setText(text);

    } catch (XmlPullParserException e) {

        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 }

   private ArrayList<FIS> parseXML(XmlPullParser parser) throws 
  XmlPullParserException,IOException
   {
    ArrayList<FIS> fis = null;
    int eventType = parser.getEventType();
    FIS fi = null;

    while (eventType != XmlPullParser.END_DOCUMENT){
        String de;
        switch (eventType){
            case XmlPullParser.START_DOCUMENT:
                fis = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                //de = parser.getDE();
                 if (fi != null){
                    if (fi.equals("DE")){
                        fi.DE = parser.nextText();
                    } else if (fi.equals("LE")){
                        fi.LE = parser.nextText();
                    }
                    else if (fi.equals("JF")){
                        fi.JF = parser.nextText();
                    }
                    else if (fi.equals("SP")){
                        fi.SP = parser.nextText();
                    }

                }
                break;

        }
        eventType = parser.next();
    }

    return fis;

  }

  }
 ArrayList<Fuel> fueldata=  parseXML(parser);
        ArrayList<String> len = null;
                len = new ArrayList();
        ArrayList<String> jf = null;
        jf = new ArrayList();
        ArrayList<String> speed = null;
        speed = new ArrayList();


        String text="";
        for(Fuel mapdata:fueldata)
        {
            len.add(mapdata.getLE());
            jf.add(mapdata.getJF());
            speed.add(mapdata.getSP());

        }

        text = Fuel_Economy(len,jf,speed);
        textView.setText(text);
ArrayList-fueldata=parseXML(解析器);
ArrayList len=null;
len=新的ArrayList();
ArrayList jf=null;
jf=新的ArrayList();
ArrayList速度=零;
速度=新的ArrayList();
字符串文本=”;
用于(燃料地图数据:燃料数据)
{
add(mapdata.getLE());
add(mapdata.getJF());
add(mapdata.getSP());
}
text=燃油经济性(len、jf、速度);
textView.setText(text);

您选择使用xmlpull库是否有特定的原因?我对这个库不太了解,但是您是如何为这个xml结构创建模型的(也许库会自动为您创建模型的)?首先,您的FIS数据类是RW的子类。也就是说,为什么要创建FIS的ArrayList?@rj2700我可以自己修复它您选择使用xmlpull库有什么特别的原因吗?我对这个库不太了解,但是您是如何为这个xml结构创建模型的(也许库会自动为您创建模型的)?首先,您的FIS数据类是RW的子类。也就是说,你为什么要创建FIS的ArrayList?@rj2700我可以自己修复它