2012-07-27 106 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