package com.company.xmlandroid;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class XmlAndroid extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btn = (Button)findViewById(R.id.searchBtn);
        final EditText et = (EditText)findViewById(R.id.searchTxt);
        
        btn.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    String searchTxt = et.getText().toString();
    if(searchTxt==null)
    {
     Toast.makeText(XmlAndroid.this, "공백", Toast.LENGTH_SHORT).show();
    }
    else
    {
     Toast.makeText(XmlAndroid.this,"검색시작", Toast.LENGTH_SHORT).show();
     searchXml(searchTxt);
    }
   }
  });
    }
    
    public void searchXml(String searchTxt)
    {
     String m_searchTxt="";
     try
     {
      m_searchTxt = URLEncoder.encode(searchTxt, "EUC-KR");
     }
     catch(UnsupportedEncodingException e1)
     {
      e1.printStackTrace();
     }
     
     String m_sConnectUrl = "http://newssearch.naver.com/search.naver?where=rss&query="+m_searchTxt+"&st=news.all&so=rel.dsc&detail=0&pd=1&start=1&display=20";
     //String m_sConnectUrl = "http://twitter.com/statuses/user_timeline/132696836.rss";
     Log.e("searchTxt",m_searchTxt);
     XmlData xmlData = null;
     ArrayList<XmlData> m_xmlData = new ArrayList<XmlData>();
     String sTag;
     
     try {
   XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
   factory.setNamespaceAware(true);
   XmlPullParser xpp = factory.newPullParser();
   
   try {
    URL u = new URL(m_sConnectUrl);
    try {
     
     InputStream in = u.openStream();
     xpp.setInput(in, "EUC-KR");
     int eventType = xpp.getEventType();
     
     while(eventType != XmlPullParser.END_DOCUMENT)
     {
      if(eventType==XmlPullParser.START_DOCUMENT)
      {
       
      }
      else if(eventType==XmlPullParser.END_DOCUMENT)
      {
       
      }
      else if(eventType==XmlPullParser.START_TAG)
      {
       Log.e("START_TAG", xpp.getName());
       sTag= xpp.getName();
       if(sTag.equals("title"))
       {
        xmlData = new XmlData();
        xmlData.d_title = xpp.nextText();
       }
       
       if(sTag.equals("link"))
       {
        xmlData.d_link = xpp.nextText();
       }
       
       if(sTag.equals("author"))
       {
        xmlData.d_author = xpp.nextText();
       }
      }
      else if(eventType==XmlPullParser.END_TAG)
      {
       sTag = xpp.getName();
       
       if(sTag.equals("item"))
       {
        m_xmlData.add(xmlData);
        xmlData = null;
       }
      }
      else if(eventType==XmlPullParser.TEXT)
      {
       xmlData.d_description = xpp.nextText();
      }
      eventType = xpp.next();
     }
    } catch (IOException e) {
     // TODO Auto-generated catch block
     Toast.makeText(XmlAndroid.this,"catch 1", Toast.LENGTH_SHORT).show();
     e.printStackTrace();
    }
   } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    Toast.makeText(XmlAndroid.this,"catch 2", Toast.LENGTH_SHORT).show();
    e.printStackTrace();
   }
  } catch (XmlPullParserException e) {
   // TODO Auto-generated catch block
   Toast.makeText(XmlAndroid.this,"catch 3", Toast.LENGTH_SHORT).show();
   e.printStackTrace();
  }
  
  XmlListAdapter adapter = new XmlListAdapter(this,R.layout.row,m_xmlData);
  setListAdapter(adapter);
    }
    
    private class XmlListAdapter extends ArrayAdapter
    {
     private ArrayList items;
     public XmlListAdapter(Context context,int textViewResourceId,ArrayList items)
     {
      super(context,textViewResourceId,items);
      this.items = items;
     }
     
     
     @Override
     public View getView(int position,View convertView,ViewGroup parent)
     {
      View v = convertView;
      if(v==null)
      {
       LayoutInflater vi =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       v = vi.inflate(R.layout.row, null);
      }
      XmlData xmlData = (XmlData)items.get(position);
      
      if(xmlData != null)
   {
       TextView tv1 = (TextView)v.findViewById(R.id.x_title);
       TextView tv2 = (TextView)v.findViewById(R.id.x_author);
       if(tv1 != null)
       {
        tv1.setText(Html.fromHtml("<a href='"+xmlData.d_link+"'>"+xmlData.d_title+"</a>"));
        tv1.setMovementMethod(LinkMovementMethod.getInstance());
       }
       if(tv2 != null)
       {
        tv2.setText(xmlData.d_author);
       }
       
   }
      return v;
     }
    }   
 
}

XmlPullParser 를 이용해서 xml을 파싱하려고 하는데요
어렵게 셈플 소스를 구해서 그대로 적용한거 같은데

try catch 문에서 자꾸 "catch 3" 문구 ( XmlPullParser  팩토리 생성하는 부분에서 발생하는듯 )가 출력이 됩니다....
2번 3번 확인해도 샘플 소스랑 차이가 없는데 ..
윗 소스가 잘못된건가요?

메니페스트에 <uses-permission android:name="android.permission.INTERNET"></uses-permission> 추가 한 상태구요
row.xml역시 만들어 져있구. XmlData.java 에 XmlData클래서 정의되어 있씁니다.

xml 읽어와서 파싱하는게 왜케 저에겐 어렵죠.. 2일째 밤샘 작업중인데... 아직 실마리가 안보이네요..