Toplam 4 adet sonuctan sayfa basi 1 ile 4 arasi kadar sonuc gösteriliyor

Konu: xml parse ederken düğümdeki html kodları sorun çıkartıyor

  1. #1
    Yeni Android
    Üyelik tarihi
    04.Nisan.2012
    Mesajlar
    12
    Ettiği Teşekkür
    0
    0 mesaja 0 teşekkür aldı

    xml parse ederken düğümdeki html kodları sorun çıkartıyor

    Merhaba

    yeni başlayan biri olarak rss okuyan bir uygulama yapmak için kıvranıyorum. http://rss.hurriyet.com.tr/rss.aspx?sectionId=1
    bu adresteki xml dosyasının içinde description düğümlerinde html tagları var . Tamamı value olarak alamıyorum.
    Değer olarak geriye "<" dönderiyor . ilk karaker bu . sonrasını görmüyor. bu özel kararterleri görmezden gelmesini nasıl sağlarım?

    Teşekkürler


    Kod:
    <description>&lt;a href="http://www.hurriyet.com.tr/pla......</description>

    Kod:
     
    package alp.oku;
    
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import java.util.ArrayList;
    
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
     
    
    import org.w3c.dom.Attr;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
     
    import org.xml.sax.InputSource;
    
    
     
     
    
     
    
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
     
    
     
    public class HurriyetActivity extends Activity {
    
    	ArrayList<Haber> HaberlerArray = new ArrayList<Haber>();
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.hbrmain);
    		setTitle("Haberler");
    		HaberlerArray 			= xml*****();
            ListView haberList 		= (ListView) findViewById(R.id.haber_listesi);
            HaberAdapter adapter 	= new HaberAdapter(this, R.layout.listele1, HaberlerArray);
            haberList.setAdapter(adapter);
    
    	}
    
    	private ArrayList<Haber> xml*****() {
    		ArrayList<Haber> haberArray = new ArrayList<Haber>();
    		URL url = null;
    		try {
    			url = new URL("http://rss.hurriyet.com.tr/rss.aspx?sectionId=1");
    			//url = new URL("localhost/huriyetrss.xml");
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		try { 
    
    			DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
    			//dFactory.setIgnoringElementContentWhitespace(false);
    			DocumentBuilder documentBuilder = dFactory.newDocumentBuilder();
    			//documentBuilder.SetIgnoringElementContentWhiteSpace(trrue).
    			Document doc  		= documentBuilder.parse(new InputSource(url.openStream()));
    			Element el 			= doc.getDocumentElement();
    			NodeList list 		= el.getElementsByTagName("item");
    			int k 				= list.getLength();			
    			for (int i = 0; i < k; i++) {
    				Node node 				= list.item(i);
    				Element eItem 			= (Element) node;
    				//title d���m� i�in de�er alal�m
    				NodeList nodeListTitle 	= eItem.getElementsByTagName("title");
    				Element elementTitle 	= (Element) nodeListTitle.item(0);
    				String Title 			= elementTitle.getChildNodes().item(0).getNodeValue();				
    				
    				//linki alal�m
    				NodeList nodeListLink 	= eItem.getElementsByTagName("link");
    				Element elementLink 	= (Element) nodeListLink.item(0);
    				String Link 			= elementLink.getChildNodes().item(0).getNodeValue();
    				
    				//desicription alal�m
    				NodeList nodeListdesicription	= eItem.getElementsByTagName("description");
    				Element elementdesicription		= (Element) nodeListdesicription.item(0);
    				String desicription				= null;
    				
    				try {
    					desicription 				= elementdesicription.getChildNodes().item(0).getNodeValue();
    				} catch (Exception e) {
    					// TODO: handle exception
    				}				
    				//media:thumbnail alal�m
    				NodeList nodeListThumnail	= eItem.getElementsByTagName("media:thumbnail");
    				Node node1 					= nodeListThumnail.item(0);
    				String resimyolu 			= "";
    				if(node1!=null){
    					NamedNodeMap nodeMap 		= node1.getAttributes();				
    					for (int j = 0; j < nodeMap.getLength(); j++) {
    						Attr att 	= (Attr) nodeMap.item(0);
    						resimyolu 	= att.getValue(); 
    					}	
    				}
    				String  Thumnail 			= resimyolu;
    				//elde edilen verileri haber yapal�m
    				Haber haber					= new Haber(Title, Link, Thumnail,desicription);
    				haberArray.add(haber);
    			}
    			 
    		} catch (Exception ex) {
    			 
    		}
    		return haberArray;
    	}
    	
    	
    	public class HaberAdapter extends ArrayAdapter<Haber>{
    		ArrayList<Haber> items;
        	public HaberAdapter(Context context, int textViewResourceId,ArrayList<Haber> objects) {
    			super(context, textViewResourceId, objects);
    			this.items = objects;
    		}
        	
        	@Override
    		public View getView(final int position, View convertView, ViewGroup parent) {
        		if (convertView == null) {
    				LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    				convertView = vi.inflate(R.layout.listele1, null);
    			}    		
        		TextView title 			= (TextView) convertView.findViewById(R.id.title);
        		TextView desicription	= (TextView) convertView.findViewById(R.id.desicription);    		
        		ImageView thumbnail		= (ImageView) convertView.findViewById(R.id.thumbnail);
        		ImageView oku			= (ImageView) convertView.findViewById(R.id.oku);
        		
        		String bannerpath		= items.get(position).getthumbnail();
        		Bitmap bimage=  getBitmapFromURL(bannerpath);
        		
        		thumbnail.setImageBitmap(bimage);
        		thumbnail.setBackgroundResource(R.drawable.imageborder);
    
        		title.setText(items.get(position).gettitle());  
        		desicription.setText(items.get(position).getDesicription());
        		
        		title.setOnClickListener(new OnClickListener() {				
    				@Override
    				public void onClick(View arg0) {
    					// TODO Auto-generated method stub
    					Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(items.get(position).getlink()));
    					startActivity(browserIntent);
    				} 
    			}); 
        		
        		oku.setOnClickListener(new OnClickListener() {				
    				@Override
    				public void onClick(View arg0) {
    					// TODO Auto-generated method stub
    					Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(items.get(position).getlink()));
    					startActivity(browserIntent);
    				}
    			});    		
        		return convertView;
        	}
        	
        }
     
    	
        public static Bitmap getBitmapFromURL(String src) {
            try {
                Log.e("src",src);
                URL url = new URL(src);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                Bitmap myBitmap = BitmapFactory.decodeStream(input);            
                myBitmap = Bitmap.createScaledBitmap(myBitmap, 225, 150, true); 
                Log.e("Bitmap","returned");
                return myBitmap;
            } catch (IOException e) {
                e.printStackTrace();
                Log.e("Exception",e.getMessage());
                return null;
            }
      }
    
    }

  2. #2
    Yeni Android
    Üyelik tarihi
    30.Mayıs.2012
    Mesajlar
    5
    Ettiği Teşekkür
    0
    0 mesaja 0 teşekkür aldı
    Ben kodunu biraz temizledim. Birkac null check'i ekledim. Exception yeme olaylarini sildim. Sorun goremedim, calisiyor sanki.
    Exception'lari yedigin icin bazi hatalari goremiyor olabilirsin. En azindan e.printStackTrace() yazarsan bir hata oluyorsa onu gorme sansin olabilir.


    public static void xml*****() throws ParserConfigurationException, IOException, SAXException {
    //url = new URL("localhost/huriyetrss.xml");
    DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
    //dFactory.setIgnoringElementContentWhitespace(false );
    DocumentBuilder documentBuilder = dFactory.newDocumentBuilder();
    //documentBuilder.SetIgnoringElementContentWhiteSpac e(trrue).
    Document doc = documentBuilder.parse(new InputSource(new FileInputStream("a.xml")));
    Element el = doc.getDocumentElement();
    NodeList list = el.getElementsByTagName("item");
    int k = list.getLength();
    for (int i = 0; i < k; i++) {
    System.out.println("Item: " + i);
    Node node = list.item(i);
    Element eItem = (Element) node;
    //title d���m� i�in de�er alal�m
    NodeList nodeListTitle = eItem.getElementsByTagName("title");
    Element elementTitle = (Element) nodeListTitle.item(0);
    String Title = elementTitle.getChildNodes().item(0).getNodeValue( );

    //linki alal�m
    NodeList nodeListLink = eItem.getElementsByTagName("link");
    Element elementLink = (Element) nodeListLink.item(0);
    String Link = elementLink.getChildNodes().item(0).getNodeValue() ;

    //desicription alal�m
    NodeList nodeListdesicription = eItem.getElementsByTagName("description");
    Element elementDescription = (Element) nodeListdesicription.item(0);
    String description = null;

    NodeList childNodes = elementDescription.getChildNodes();
    Node item = childNodes.item(0);
    if (item != null) {
    description = item.getNodeValue();
    }
    System.out.println(description);
    //media:thumbnail alal�m
    NodeList nodeListThumnail = eItem.getElementsByTagName("media:thumbnail");
    Node node1 = nodeListThumnail.item(0);
    String resimyolu = "";
    if (node1 != null) {
    NamedNodeMap nodeMap = node1.getAttributes();
    for (int j = 0; j < nodeMap.getLength(); j++) {
    Attr att = (Attr) nodeMap.item(0);
    resimyolu = att.getValue();
    }
    }
    }
    }

  3. #3
    Yeni Android
    Üyelik tarihi
    04.Nisan.2012
    Mesajlar
    12
    Ettiği Teşekkür
    0
    0 mesaja 0 teşekkür aldı
    hocam öncelikle vakit ayrdığınız için teşekkür ederim.
    kodlarınızı denedim . fakat siz a.xml diye bir dosya üzerinde çalışmışsınız yapısı ve desicription düğümünde html etiketleri varmı bilmniyorum. Ben hurriyetin rss url ile çalışırdığımda düğümdeki html metninin gene ilk karater olan < işaretini alıyor sonrasını almıyor . bu özel karakter kafa karıştırıyor .

    Diğer düğümlerde sorun yok. Dün çok araştırdım fakat bir çözüm bulamadım. aynı sorunu yaşayan birkaç kişinin mesajlarını buldum ama çözümler konusunda birşey anlamadım.
    http://stackoverflow.com/questions/4...sing-saxparser



    Tekrar teşekkürler
    Konu alpaygunes tarafından (31.Mayıs.2012 Saat 09:00 ) değiştirilmiştir.

  4. #4
    Yeni Android
    Üyelik tarihi
    04.Nisan.2012
    Mesajlar
    12
    Ettiği Teşekkür
    0
    0 mesaja 0 teşekkür aldı
    Homcam < karakterinden dolayı desicription düğümün altında düğümler varmış gibi davrandığını fark ettim. döngü kurarak var olan alt düğümlerdeki valueleri bir birne ekledim


    Kod:
    private ArrayList<Haber> xml*****() {
    		ArrayList<Haber> haberArray = new ArrayList<Haber>();
    		URL url = null;
    		try {
    			url = new URL("http://rss.hurriyet.com.tr/rss.aspx?sectionId=1");
    			// url = new URL("localhost/huriyetrss.xml");
    		} catch (MalformedURLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		try {
    
    			DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
    			// dFactory.setIgnoringElementContentWhitespace(false);
    			DocumentBuilder documentBuilder = dFactory.newDocumentBuilder();
    			// documentBuilder.SetIgnoringElementContentWhiteSpace(trrue).
    			Document doc = documentBuilder.parse(new InputSource(url.openStream()));
    			Element el = doc.getDocumentElement();
    			NodeList list = el.getElementsByTagName("item");
    			int k = list.getLength();
    			for (int i = 0; i < k; i++) {
    				Node node = list.item(i);
    				Element eItem = (Element) node;
    				// title d���m� i�in de�er alal�m
    				NodeList nodeListTitle = eItem.getElementsByTagName("title");
    				Element elementTitle = (Element) nodeListTitle.item(0);
    				String Title = elementTitle.getChildNodes().item(0)
    						.getNodeValue();
    
    				// linki alal�m
    				NodeList nodeListLink 	= eItem.getElementsByTagName("link");
    				Element elementLink 	= (Element) nodeListLink.item(0);
    				String Link 			= elementLink.getChildNodes().item(0).getNodeValue();
    
    				// desicription alal�m
    				NodeList nodeListdesicription 	= eItem.getElementsByTagName("description");
    				Element elementdesicription 	= (Element) nodeListdesicription.item(0);
    				String desicription 			= "";
    
    				try {
    					//desicripton içindeki html taglardan dolayı çok parçalı görünüyor parçaların hepsini alıp valuelerini birleştirelim
    					Integer parcasayisi = elementdesicription.getChildNodes().getLength();
    					 
    					for (int j = 0; j < parcasayisi; j++) {
    						if(elementdesicription.getChildNodes().item(j).getNodeValue()!=null){
    							desicription 				+= elementdesicription.getChildNodes().item(j).getNodeValue();
    						}
    					}
    					
    				} catch (Exception e) {
    					// TODO: handle exception
    				}
    				// media:thumbnail alal�m
    				NodeList nodeListThumnail 		= eItem.getElementsByTagName("media:thumbnail");
    				Node node1 = nodeListThumnail.item(0);
    				String resimyolu = "";
    				if (node1 != null) {
    					NamedNodeMap nodeMap = node1.getAttributes();
    					for (int j = 0; j < nodeMap.getLength(); j++) {
    						Attr att = (Attr) nodeMap.item(0);
    						resimyolu 		= att.getValue();
    					}
    				}
    				String Thumnail 		= resimyolu;
    				// elde edilen verileri haber yapal�m
    				Haber haber 			= new Haber(Title, Link, Thumnail, desicription);
    				haberArray.add(haber);
    			}
    
    		} catch (Exception ex) {
    
    		}
    		return haberArray;
    	}

Yetkileriniz

  • Konu Acma Yetkiniz Yok
  • Cevap Yazma Yetkiniz Yok
  • Eklenti Yükleme Yetkiniz Yok
  • Mesajınızı Değiştirme Yetkiniz Yok
  •  
yayın hakları
5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir.

Sitenin adı bildirilerek, ve yazıya link verilerek alıntı yapılabilir. Alıntı yapılan yazının altında, belirgin bir şekilde kaynak olarak “Andronova Forum” ve yazının kendi bağlantı linkinin yer alması gerekmektedir. Herhangi bir yazının izinsiz tamamen veya kısmen kopyalanması durumunda hukuki işlem yapılacaktır. Müşteri hizmetleri 2018

Reklam Gizlilik Politikası
Bizi Takip Edin