Android ile internette olan countries.xml URLsindeki XML dosyasını DOM ile parse edip ArrayAdapter kullanarak android.R.layout.simple_list_item_multiple_choice kullanarak listeledim. Bu örneği daha iyi anlamak için Java Crontab XML file Parser JSP Ajax Example bakabilirisniz.
Android ile belirtilen urldeki xml dosyasına bağlanmak için internette erişim izni(AndroidManifest.xml) vermeyi unutmayın.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
ParsingXML.java
package com.xml.parser;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ParsingXML extends Activity {
private ListView listView_xml;
private ArrayList<String> xmlList=new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView_xml=(ListView) findViewById(R.id.listView_xml);
xmlList=getListFromXml();
}
private ArrayList<String> getListFromXml() {
//localde bir liste oluşturuyoruz ve geri döndürüyoruz.
ArrayList<String> list=new ArrayList<String>();
try {
//<country> <text> Norway </text> <value> N </value> </country> şeklinde bir xml elementleri
URL url=new URL("http://www.w3schools.com/aspnet/countries.xml");
DocumentBuilderFactory dFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dFactory.newDocumentBuilder();
//Verilen url de stream açiyor.
Document document=dBuilder.parse(new InputSource(url.openStream()));
document.getDocumentElement().normalize();
//Ana tag <country> childlarına for ile Node lerine erişiyoruz
NodeList nodeListCountry=document.getElementsByTagName("country");
for (int i = 0; i < nodeListCountry.getLength(); i++) {
Node node=nodeListCountry.item(i);
Element elementMain=(Element) node;
//getElementsByTagName() ile text ve value deki değerlere erişiyoruz.
NodeList nodeListText=elementMain.getElementsByTagName("text");
//NodeListtedeki 0. itema erişiyoruz.
Element elementText=(Element) nodeListText.item(0);
NodeList nodeListValue=elementMain.getElementsByTagName("value");
Element elementValue=(Element) nodeListValue.item(0);
list.add(elementText.getChildNodes().item(0).getNodeValue()+"--->"
+elementValue.getChildNodes().item(0).getNodeValue());
}
} catch (MalformedURLException e) {
e.printStackTrace();
}catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
@Override
protected void onStart() {
super.onStart();
//multiple choice listadapter
ArrayAdapter<String> araAdapter=new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_multiple_choice, xmlList);
listView_xml.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView_xml.setAdapter(araAdapter);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@+id/listView_xml" android:layout_height="wrap_content" android:layout_width="match_parent"></ListView>
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xml.parser"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="ParsingXML"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>


[...] parse ettim ve SimpleAdapter kullanarak Custom Listview de listeledim. Daha iyi anlamanız için Android XML Parsing from Internet with DOM Multichoice ArrayAdapter Sample örneğine bakın. Output [...]
hocam tebrik ediyorum güzel bir uygulama yanlız commenti biraz daha fazla koyarsan dha iyi olur mesala bazı yerlerde neden o fonk. kullanılmış bilemiyorum. gerçi dedigin gibi nette bir sürü açıklama var ama senin sayfandan ayrılmak istemiyorum.
Tolgahan’a katılıyorum
Hocam merhaba,
)
benim çok acil bir şekilde sabah.com un rss ini çekmem lazım. android işetim sisteminde internet sistesinden rss çekmek gibi bir tez konum var. çekeceğim link aşağıda, bunu nasıl başarabilirim? yardımcı olabilir misin? ciddi anlamda ihtiyacım var.( basit bir program ve görüntü olsa yeter dedi hocam ama ben ne öyle ders gördüm ne de eclipse kullandım beceremedim yani
http://www.sabah.com.tr/rss/Anasayfa.xml
Merhaba hocam.Androidde geliştirdiğim uygulamada ebay sitesinden bir ürünün fiyat bilgisini çekmek istiyorum.Bunun için ürünün barkod numarasını kullanacağım.Ebay geliştiricilere sağlamış olduğu keyler aracılığıyla erişime izin veriyor ancak barkod numarasına göre aramayı nasıl yaptırabilirim yardımcı olabilirmisiniz?Teşekkürler..