2012-07-18 40 views
0

我正在爲Android創建應用程序,我需要顯示此頁面的XML文件:http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=7009 我嘗試了頁面上給出的解決方案,但是我發現它是錯誤的,因爲它在運行時不顯示應用程序。我只是想表明 「TIPO = DOLAR SPOT INTERCAMBIO」解析XML聯機文件Android

這是XML代碼

XML CODE

,這是我的代碼:

xmlpruebaprueba.jar

XMLdataCollected sitesList= null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_xmlpruebaprueba); 


    //creando un Layout 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(1); 

    //creando TextView 

    TextView Registro[]; 
    TextView Tipo[]; 

    try { 
     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 

     URL sourceURL = new URL("http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=7009"); 

     handlingXml HandlingXml = new handlingXml(); 
     xr.setContentHandler(HandlingXml); 
     xr.parse(new InputSource(sourceURL.openStream())); 
    }catch (Exception e){ 
     System.out.println("XML Parsing Exception= " + e); 
    } 


    sitesList = handlingXml.sitesList; 

    Registro = new TextView[sitesList.getRegistro().size()]; 
    Tipo = new TextView[sitesList.getTipo().size()]; 

    for (int i = 0; i < sitesList.getRegistro().size(); i++) { 
     Registro[i] = new TextView(this); 
     Registro[i].setText("Registro = "+sitesList.getRegistro().get(i)); 
     Tipo[i] = new TextView(this); 
     Tipo[i].setText("Tipo = "+sitesList.getTipo().get(i)); 

     layout.addView(Registro[i]); 
     layout.addView(Tipo[i]); 
    } 
} 

}


,這是我的處理程序

Boolean currentElement = false; 
String currentValue = null; 
public static XMLdataCollected sitesList = null; 


public static XMLdataCollected getDataCollected(){ 
    return sitesList; 
} 

public static void setSitesList(XMLdataCollected sitesList){ 
    handlingXml.sitesList = sitesList; 
} 

@Override 
public void startElement(String uri, String localName, String qName, 
     Attributes attributes) throws SAXException { 
    // TODO Auto-generated method stub 

    currentElement = true; 

    if(localName.equals("Root")) 
    { 
     sitesList = new XMLdataCollected(); 
    }else if (localName.equals("Registro")){ 
     String attr = attributes.getValue("tipo"); 
     sitesList.setTipo(attr); 
    } 
} 



@Override 
public void endElement(String uri, String localName, String qName) 
     throws SAXException { 
    // TODO Auto-generated method stub 

    currentElement = false; 


    if (localName.equalsIgnoreCase("Registro")) 
     sitesList.setRegistro(currentValue); 
     else if (localName.equalsIgnoreCase("Root")) 
     sitesList.setRoot(currentValue);  
    } 

@Override 
public void characters(char[] ch, int start, int length) 
     throws SAXException { 
    // TODO Auto-generated method stub 
    if (currentElement) { 
     currentValue = new String(ch, start, length); 
     currentElement = false; 
     } 
} 

} 

,這是我dataCollected

公共類XMLdataCollected {

private ArrayList<String> root = new ArrayList<String>(); 
private ArrayList<String> registro = new ArrayList<String>(); 
private ArrayList<String> tipo = new ArrayList<String>(); 

public ArrayList<String> getRoot(){ 
    return root; 
} 

public void setRoot(String root){ 
    this.root.add(root); 
} 

public ArrayList<String> getRegistro(){ 
    return registro; 
} 

public void setRegistro(String registro){ 
    this.registro.add(registro); 
} 

public ArrayList<String> getTipo(){ 
    return tipo; 
} 

public void setTipo(String tipo){ 
    this.tipo.add(tipo); 
} 

}

+0

應用程序崩潰?或什麼也沒有顯示 – 2012-07-18 18:18:32

+0

顯示錯誤消息並關閉應用程序 – 2012-07-18 18:20:00

+0

然後他們是一個崩潰日誌..在你的'LogCat'中。發佈它..btw問題是..你正在主UI線程上運行'網絡請求'..使用AsyncTask調用Web請求。 http://developer.android.com/reference/android/os/AsyncTask.html – 2012-07-18 18:23:03

回答

3

您是在主呼喚你的Web Request UI線程。

請不要做這個

使用AsyncTask調用的Web請求。