2012-07-27 183 views
0

我正在爲Android做一個應用程序,我需要顯示一個XML文件this page:在應用程序顯示Compra="481.3" Venta="485"但我不能"DOLAR SPOT INTERBANCARIO" and Var_por="-0,53" Var_pes="-2,60" hora="10:35"。請幫助我的代碼。Xml解析android代碼

XML圖像XML

這是ExampleHandler代碼

public class ExampleHandler extends DefaultHandler { 

private boolean in_Root = false; 
private boolean in_Registro = false; 

private ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet(); 

public ParsedExampleDataSet getParsedData() { 
    return this.myParsedExampleDataSet; 
} 


@Override 
public void startDocument() throws SAXException { 
    this.myParsedExampleDataSet = new ParsedExampleDataSet(); 
} 

@Override 
public void endDocument() throws SAXException { 
} 


@Override 
public void startElement(String namespaceURI, String localName, 
     String qName, Attributes atts) throws SAXException { 
    if (localName.equals("Root")) { 
     this.in_Root = true; 
    }else if (localName.equals("Registro")) { 
     this.in_Registro = true; 
     // Extract an Attribute 
     String attrValue = atts.getValue("Compra"); 
     Float compra = Float.parseFloat(attrValue); 
     myParsedExampleDataSet.setExtractedCompra(compra); 

     String attrValue2 = atts.getValue("Venta"); 
     Float venta = Float.parseFloat(attrValue2); 
     myParsedExampleDataSet.setExtractedVenta(venta); 

     **String attrValue3 = atts.getValue("Var_por"); 
     Float por = Float.parseFloat(attrValue3); 
     myParsedExampleDataSet.setExtractedPor(por);** 
     //its my wrong code for Var_por  
    } 
} 

@Override 
public void endElement(String namespaceURI, String localName, String qName) 
     throws SAXException { 
    if (localName.equals("Root")) { 
     this.in_Root = false; 
    }else if (localName.equals("Registro")) { 

    } 
} 

/** Gets be called on the following structure: 
* <tag>characters</tag> */ 
@Override 
public void characters(char ch[], int start, int length) { 
    if(this.in_Registro){ 
     //myParsedExampleDataSet.setExtractedStruct(new String(ch, start, length)); 
    } 
} 

}

+0

請參閱[this](http://www.ibm.com/developerworks/opensource/library/x-android/) – 2012-07-27 14:58:35

回答

0

你可能會檢查出的SimpleXML的小東西那樣。它在Android上運行良好。

SimpleXML parser

+0

謝謝,我正在檢查代碼 – 2012-07-27 15:06:15

+0

我的代碼有效,只是不知道如何顯示xml – 2012-07-27 15:07:37

0

我實現了一個解決這個問題最近使用Jsoup。 下面概述的解決方案將從提供的URL中獲取數據並將其解析爲一個字符串數組。

設置

.jar文件可以發現here

有關如何將它包含在Android應用程序中的說明是here

實施

採用進口:

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements; 

import java.io.IOException; 
import java.util.ArrayList; 

功能代碼:

public static ArrayList<String> parseDocument() 
{ 
    ArrayList<String> values = new ArrayList<String>(); 

    Document doc; 
    try { 
     doc = Jsoup.connect("http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=7009").get(); // Timeout is in milliseconds 
     Elements nodes = doc.select("Registro"); 

     values.add(nodes.attr("tipo")); 
     values.add(nodes.attr("Compra")); 
     values.add(nodes.attr("Venta")); 
     values.add(nodes.attr("Var_por")); 
     // etc 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return values; 
} 

所有你需要一次返回函數讀取ArrayList中的值做。

+0

的其他參數我會看看它是否有效,謝謝! – 2012-07-27 15:20:36

+0

我有一個quesstion,公共靜態ArrayList parseDocument()是其他類? – 2012-07-27 15:52:12

+0

它本身並不是一個班級。但是,如果你想要,你可以將它包裝在一個類中(例如一個實用程序類或類似的)。 如果它讓你感到困惑,你可以刪除函數聲明的「public static」部分。 – 2012-07-27 16:37:37