Android Pull Parser из url.xml
Я искал два дня, возможно, я нашел решение, которое решило бы мою проблему, хотя я еще не нашел того, которое понимаю.
Я следую этому руководству - Простое руководство по XMLPullParser
Я знаю, что мне нужно изменить две области:
Здесь 1
public List<Employee> parse(InputStream is) {
XmlPullParserFactory factory = null;
XmlPullParser parser = null;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
parser = factory.newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();
и здесь 2
List<Employee> employees = null;
try {
XMLPullParserHandler parser = new XMLPullParserHandler();
employees = parser.parse(getAssets().open("employees.xml"));
Это из рабочего примера, ниже взято из того, что я пытаюсь достичь, удалив это
employee = parser.parse(getAssets().open("employee.xml"));
Я пытался получить что-то вроде
URL url= новый URL (" http://www.example.xml/ ");
URLConnection connection = url.openConnection ();
InputStream in = connection.getInputStream ();
сотрудники = parser.parse (в);
Первую часть я не очень уверен, что изменить, во-вторых, я знаю, что мне нужно добавить URL-адрес и открыть соединение. Затем измените строку employee = parser..., но до сих пор не получилось получить рабочий ответ.
Я добавил android.permission.INTERNET.
Я также добавил свой собственный XML-файл в папку активов, копию URL-адреса, который я хочу проанализировать, что прекрасно работает.
Любая помощь будет принята с благодарностью.
1 ответ
Пожалуйста, посмотрите мои ответы здесь. Android: исключение XmlpullParser
Кроме того, убедитесь, что в
XmlUtils.beginDocument(parser,"results");
"results" - это имя вашего первого xml-узла. В вашем случае это могут быть "сотрудники"
Кроме того, для служб, связанных с сетью, доступ через основной поток пользовательского интерфейса может быть невозможен.
Пожалуйста, используйте AsyncTask и добавьте свой метод в метод doInBackground().
private class DownloadFilesTask extends AsyncTask<String, Void, String> {
protected Long doInBackground(String... urls) {
//put your xml parsing code here.
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}