我按照这个例子来解析xml example,但是当我尝试解析xml时,出现错误。 该Xml是Reg Variacion =“20”/>用标签解析xml
我需要显示TextView []; 20,20,20
这是我的代码:
MainActivity.java
public class MainActivity extends Activity {
SitesList sitesList = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);
/** Create a new textview array to display the results */
TextView registro[];
TextView variacion[];
try {
/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
/** Send URL to parse XML Tags */
URL sourceUrl = new URL("http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=75");
/** Create handler to handle XML Tags (extends DefaultHandler) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
/** Get result from MyXMLHandler SitlesList Object */
sitesList = MyXMLHandler.sitesList;
/** Assign textview array lenght by arraylist size */
registro = new TextView[sitesList.getRegistro().size()];
variacion = new TextView[sitesList.getVariacion().size()];
/** Set the result text in textview and add it to layout */
for (int i = 0; i < sitesList.getRegistro().size(); i++) {
registro[i] = new TextView(this);
registro[i].setText(sitesList.getRegistro().get(i));
variacion[i] = new TextView(this);
variacion[i].setText(sitesList.getVariacion().get(i));
layout.addView(registro[i]);
//layout.addView(category[i]);
}
/** Set the layout view to display */
setContentView(layout);
}
}
MyXMLHandler.java
DefaultHandler {
@Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
currentElement = true;
if (localName.equals("root"))
{
/** Start */
sitesList = new SitesList();
} else if (localName.equals("registro")) {
String attr = attributes.getValue("Variacion");
String var = String.valueOf(attr);
sitesList.setVariacion(var);
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentElement = false;
/** set value */
if (localName.equalsIgnoreCase("registro"))
sitesList.setRegistro(currentValue);
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}
}
}
*“当我试图解析XML,我得到错误” *是相当模糊的,你能更具体? LogCat中的堆栈跟踪是什么意思?对于初学者,我可以告诉你'localName.equals(“registro”)'永远不会是真的,因为返回的xml显示'Registro'(大写'R')。 –
当你做某件事情并得到一个错误时,告诉我们错误是什么。你可能不了解错误信息,但我们有很好的机会。 –
我解决了这个问题,解析错误 –