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");
 }
}
Другие вопросы по тегам