Как создать XML API, который будет предоставлять данные для моего приложения Android
ну, у меня есть приложение для Android, которое должно быть обновлено с данными ... я знаю, что делать на android-end для разбора XML ... но когда я пытаюсь проанализировать данные через следующий XML-файл (а) с помощью stringbuilder ( б) я не получаю данные в моем приложении ...
(А) data.xml
This is first item.
This is second item.
This is third item.
This is first item.
This is second item.
This is third item.
This is first item.
This is second item.
This is third item.
(б) строка, которую я использую в моем приложении для Android ...
http://www.xyz.com/data.xml?build=second
приведенный ниже код Java в 3 файлах (c) Main (d) HandlingXMLStuff (e) XMLDataCollected
(С) Главная
package com.xyz.xmlpar1;
import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Main extends Activity implements OnClickListener {
static final String BaseURL="http://www.xyz.com/data.xml?code=";
Button b;
TextView tv;
EditText et1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et1=(EditText) findViewById(R.id.editText1);
b=(Button) findViewById(R.id.button1);
tv=(TextView) findViewById(R.id.textView1);
b.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String item=et1.getText().toString();
StringBuilder URL=new StringBuilder(BaseURL);
URL.append(item);
String fullURL=URL.toString();
try{
URL website=new URL(fullURL);
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
XMLReader xr=sp.getXMLReader();
HandlingXMLStuff doingWork=new HandlingXMLStuff();
xr.setContentHandler(doingWork);
xr.parse(new InputSource(website.openStream()));
String information=doingWork.getInformation();
tv.setText(information);
}catch(Exception e){
tv.setText("error");
}
}
}
(Г) HandlingXMLStuff
package com.xyz.xmlpar1;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class HandlingXMLStuff extends DefaultHandler {
XMLDataCollected info=new XMLDataCollected();
public String getInformation(){
return info.datatoString();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
if(localName.equals("code")){
String element=attributes.getValue("build");
info.setData(element);
}
}
}
(Е) XMLDataCollected
package com.xyz.xmlpar1;
public class XMLDataCollected {
String datac=null;
public void setData(String c){
datac=c;
}
public String datatoString(){
return datac;
}
}
выбратьвторой» элемент данных ..
куда я иду не так ???