2012-07-18 3 views
0

Android 용 응용 프로그램을 만들고 있는데이 페이지의 XML 파일을 표시해야합니다 : http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=7009 페이지에서 주어진 해결책을 시도했지만 실행시 표시되지 않으므로 잘못되었습니다. 응용 프로그램. 난 그냥XML 온라인 파일 구문 분석 Android

이는 XML 코드

XML CODE

이다 "억센 = 달러 호주 달러 SPOT INTERCAMBIO을"보여주고 싶은이 내 코드입니다 :

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]); 
    } 
} 

}


,210

는이 내 핸들러

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; 
     } 
} 

} 

이며,이

공용 클래스 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

응용 프로그램이 손상 되나요? 또는 아무것도 표시하지 않습니까? –

+0

은 오류 메시지를 표시하고 응용 프로그램을 닫습니다. –

+0

그러면 충돌 로그입니다. 'LogCat'에서. 그것을 게시 .. 문제는 .. 당신은 메인 UI 스레드에서'네트워크 요청'을 실행하고 있습니다. AsyncTask를 사용하여 웹 요청을 호출하십시오. http://developer.android.com/reference/android/os/AsyncTask.html –

답변

3

당신은 주에 Web Request를 호출 내 dataCollected입니다 UI 스레드.

웹 귀하의 요청 전화를 본

사용 AsyncTask하지 마십시오.