Я пытаюсь создать список / массив данных для хранения и отправки в качестве входных данных для функции.Но я не в состоянии сделать это, кто-нибудь может мне помочь.Я новичок в разработке Andriod.
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;
}
}
Этот 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.
Заранее спасибо.