Die XML-Datei, die ich Parsen bin ist alltrains.xml alsAndroid: XML-Datei parsen, aber nicht mehr als ein Element durch Klassenobjekt immer Zugriff
<?xml version="1.0" encoding="utf-8"?>
<resources>
<train>
<trainno>02018</trainno>
<name>GKP LTT PREMIUM</name>
<sourcestation>GORAKHPUR JN</sourcestation>
<deptime>08:25</deptime>
<destinationstation>LOKMANYATILAK T</destinationstation>
<destarrtime>11:50</destarrtime>
</train>
<train>
<trainno>02529</trainno>
<name>GKP UHP PREMIUM</name>
<sourcestation>GORAKHPUR JN</sourcestation>
<deptime>20:55</deptime>
<destinationstation>UDHAMPUR</destinationstation>
<destarrtime>21:30</destarrtime>
</train>
<train>
<trainno>02530</trainno>
<name>UHP GKP PREMIUM</name>
<sourcestation>UDHAMPUR</sourcestation>
<deptime>23:45</deptime>
<destinationstation>GORAKHPUR JN</destinationstation>
<destarrtime>23:20</destarrtime>
</train>
<train>
<trainno>02680</trainno>
<name>SVDK YPR PREMIUM</name>
<sourcestation>SHMATA VD KATRA</sourcestation>
<deptime>06:30</deptime>
<destinationstation>YESVANTPUR JN</destinationstation>
<destarrtime>15:00</destarrtime>
</train>
<train>
<trainno>02696</trainno>
<name>JP YPR PREMIUM</name>
<sourcestation>JAIPUR</sourcestation>
<deptime>22:15</deptime>
<destinationstation>YESVANTPUR JN</destinationstation>
<destarrtime>17:55</destarrtime>
</train>
</resources>
Der Code von MainActivity.java folgt, ist wie folgt
public class MainActivity extends AppCompatActivity
{
static Resources myResources;
static InputStream inputStream;
TechCrunchTask downloadTask;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myResources = getResources();
downloadTask=new TechCrunchTask();
downloadTask.execute();
}
public static class TechCrunchTask extends AsyncTask<Void,Void,ArrayList<HashMap<String,String>>>
{
@Override
protected ArrayList<HashMap<String,String>> doInBackground(Void... params)
{
ArrayList<HashMap<String,String>> results=new ArrayList<>();
try {
inputStream = myResources.openRawResource(R.raw.alltrains);
results=ProcessXml(inputStream);
}
catch (Exception e)
{
//e.printStackTrace();
}
return results;
}
@Override
protected void onPostExecute(ArrayList<HashMap<String,String>> result)
{
// L.m(result+"");
}
public ArrayList<HashMap<String,String>> ProcessXml (InputStream inputStream) throws Exception
{
DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
Document xmlDocument=documentBuilder.parse(inputStream);
Element RootElement=xmlDocument.getDocumentElement();
Log.d("ResourceName",xmlDocument.getDocumentElement().toString());
NodeList itemList=RootElement.getElementsByTagName("train");
Node CurrentItem=null;
NodeList ItemChildren=null;
Node CurrentChild=null;
NamedNodeMap MediaThumbnailAttributes=null;
Node CurrentAttribute=null;
int count=0;
ArrayList<HashMap<String,String>> results=new ArrayList<>();
for(int i=0;i<itemList.getLength();i++)
{
CurrentItem=itemList.item(i);
ItemChildren=CurrentItem.getChildNodes();
for(int j=0;j<ItemChildren.getLength();j++)
{
TrainObject trainObject=new TrainObject();
CurrentChild=ItemChildren.item(j);
String name="";
int id;
trainObject.setId(i+1);
Log.d("ID",Integer.toString(trainObject.getId()));
if(CurrentChild.getNodeName().equalsIgnoreCase("name"))
{
name=CurrentChild.getTextContent();
// Log.d("Name",name);
trainObject.setTrainName(name);
Log.d("Name",trainObject.getTrainName());
Log.d("Object",""+Integer.toString(trainObject.getId())+":"+Integer.toString(trainObject.getTrainNo()));
}
if(CurrentChild.getNodeName().equalsIgnoreCase("trainno"))
{
id=Integer.parseInt(CurrentChild.getTextContent());
//Log.d("ID",Integer.toString(id));
trainObject.setTrainNo(id);
Log.d("Trainno",Integer.toString(trainObject.getTrainNo()));
Log.d("Object2",""+Integer.toString(trainObject.getId())+":"+Integer.toString(trainObject.getTrainNo())+":"+trainObject.getTrainName());
}
}
}
return results;
}//End of ProcessXml Function
}
Der Code für TrainObject.java Klasse wird wie folgt
package xml_parsing_slidev2.ats.com.xml_parsing_slidev2;
public class TrainObject
{
int id;
int TrainNo;
String TrainName;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public int getTrainNo()
{
return TrainNo;
}
public void setTrainNo(int trainno)
{
this.TrainNo = trainno;
}
public String getTrainName()
{
return TrainName;
}
public void setTrainName(String trainName)
{
this.TrainName = trainName;
}
}
Dieser Code funktioniert gut, wenn ich bin Zugriff auf die Werte von trainno und Namen in ihrer eigenen, wenn Blöcke, aber wenn ich die gemeinsam zugreifen, wie ich mit Anweisung
zuzugreifen versuchtLog.d("Object2",""+Integer.toString(trainObject.getId())+":"+
Integer.toString(trainObject.getTrainNo())+":"+trainObject.getTrainName());
es nur Trainno zeigt und Zugname nicht eher zeigen, ist es Nullwert zeigt
Bitte führen Sie mich, wie ich alle Werte auf einmal bekommen kann, so dass ich sie an meine AutoCompleteTextView übergeben kann. Danke
Danke Heri. Versuchte und arbeitete gut. –
Gern geschehen. Darf ich Sie bitten, die Antwort zu akzeptieren und wahrscheinlich zu verbessern? – Heri