2011-10-25 3 views
2

Во-первых, пожалуйста, проверьте URL * http://mobileecommerce.site247365.com/admin/catdata.xml в * Google Chrome. Я столкнулся с двумя проблемами 1. Для второго cat_desc из XML, имеющих cat_name E п I сентября не показывая на WebView .Я думаю, что это происходит потому, что в его cat_desc содержит % знак на первой строке в таблице стилей тег < "таблица стиль =" граница коллапс: коллапс, ширина : 100%;»> Как игнорировать знак%cat_desc тег не может быть разобрано completlly и не показывая properlly в WebView

проблемы .Second является то, что из последнего thrid тега с cat_name Раздаточных создают проблемы при анализе cat_desc. Он не будет разбираться полностью, его последние три строки не анализируются. Я также проверю его в журнале, но последние три строки не являются paresd.Почему это так? Для других cat_desc разбираются очень хорошо и хорошо работают в webview.

public class FirstActivity extends ListActivity implements OnItemClickListener { 
/** called when the activity is first created. */ 

String[] cat_name=null; 
String[] cat_desc=null; 
ListView optionslist=null; 
NewsListAdapter adapter=null; 
ArrayList<NewsItem> getArray=null; 
ArrayAdapter<String> arrayadapter=null; 
HashMap<String, String> hashamp=null; 



public static final String url="http://mobileecommerce.site247365.com/admin/catdata.xml"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    innitializeUIComponents(); 
    new RefreshArrayFromInternet().execute(url); 


} 

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 

    Log.v("in position", ""+position); 

    String str=new String(getArray.get(position).getCatdesc()); 
    Log.v("on item click desc", str); 
    Intent intent=new Intent(FirstActivity.this, WebviewActivity.class); 
    intent.putExtra("str",str); 
    startActivity(intent); 
} 
private void innitializeUIComponents() 
{ 
    optionslist=getListView(); 
    optionslist.setOnItemClickListener(this); 
} 

private class RefreshArrayFromInternet extends AsyncTask<String,Void,ArrayList<NewsItem>> 
{ 

    @Override 
    protected ArrayList<com.example.vidushi.NewsItem> doInBackground(
      String... params) { 


     Log.v("Thread started","parsing thread has started!!!"); 
     final ArrayList<NewsItem> newsList=new ArrayList<NewsItem>(); 
     try 
     { 
      URL urlexec=new URL(params[0]); 
      URLConnection connection=urlexec.openConnection(); 
      InputStream input=connection.getInputStream(); 
      SAXParserFactory factory=SAXParserFactory.newInstance(); 
      SAXParser parser=factory.newSAXParser(); 

      parser.parse(input,new DefaultHandler(){ 

       boolean itemTagStarted=false; 
       String currentTag="";   
       StringBuffer buffer; 
       NewsItem item=null; 
       @Override 
       public void startDocument() throws SAXException { 
        Log.v("parsing started!!!","parsing started!!!"); 

       } 
       @Override 
       public void startElement(String uri, String localName,String qName, Attributes attributes) 
       throws SAXException { 
        currentTag=localName; 
        Log.v("in start elelmet", "in start elelmet"); 
        if(qName.equals("Table")) 
        { 
         buffer=new StringBuffer(); 
         itemTagStarted=true; 

         item=new NewsItem(); 
        } 

       } 
       @Override 
       public void characters(char[] ch, int start, int length) 
         throws SAXException { 

        if(itemTagStarted) 
        { 
         if(currentTag.equals("Cat_Name")) 
         { 
          item.setCatname(String.valueOf(ch,start,length)); 

         } 
         if(currentTag.equals("Cat_id")) 
         { 

          item.setCatid(String.valueOf(ch,start,length)); 
         } 

         if(currentTag.equals("Cat_Desc")) 
         { 
          buffer.append(String.valueOf(ch,start,length)); 

         } 
        } 
       } 

       @Override 
       public void endElement(String uri, String localName, 
         String qName) throws SAXException { 
        currentTag=""; 

        if(qName.equals("Table")) 
        { 
         itemTagStarted=false; 
         newsList.add(item); 

        } 
        if(qName.equals("Cat_Desc")) 
        { 
         item.setCatdesc(buffer.toString()); 
         Log.v("Description data",buffer.toString()); 

        } 
       } 
       @Override 
       public void endDocument() throws SAXException { 
        Log.v("parsing completed","parsing completed : array size : "+newsList.size()); 
       } 

      }); 
     } 
      catch(Exception ex) 
      { 
       ex.printStackTrace(); 
      } 

     return newsList; 
    } 

    @Override 
    protected void onPostExecute(ArrayList<NewsItem> result) { 
     super.onPostExecute(result); 
     getArray=result; 
     if(result.size()==0) 
     { 
      Toast.makeText(FirstActivity.this,"There is some problem with the internet connection or the specified url!!!",Toast.LENGTH_LONG).show(); 
     } 
     String[] array=new String[result.size()]; 
     cat_desc=new String[result.size()]; 
     Log.v("resukt size",""+result.size()); 
     for(int i=0;i<result.size();i++) 
     { 
      array[i]=result.get(i).getCatname(); 

     } 

     arrayadapter=new ArrayAdapter<String>(FirstActivity.this,android.R.layout.simple_list_item_1,array); 
     optionslist.setAdapter(arrayadapter); 

    } 

} 

ответ

1

Я прошел этот URL: -

http://mobileecommerce.site247365.com/admin/catdata.xml" 

и узнать, что вы должны сделать очень небольшие изменения, которые используют вместо точек% .. в WebView, ни поддержки символа% возраста .. Надеюсь, это поможет .. :)