Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
#1

XML Парсинг (yml) - Программирование Android

27.08.2016, 16:06. Просмотров 444. Ответов 16
Метки нет (Все метки)

Вопрос таков. Чем распарсить yml страницу http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN

Парсил XML с другого сайта, но таким образом не получается (возможно из-за вложенных категорий).

Неужели обычный XML парсинг? Тогда не пойму почему не работает мой.

Спасибо за ответ!

Java
1
private final static String urlAddress = "http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN";
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
private Context context;
    private InputStream inputStream;
    private ListView lv;
    private XmlPullParser parser;
    private XmlPullParserFactory factory;
    private ProgressDialog progressDialog;
    private ArrayList<PostList> postLists = new ArrayList<>();
 
    public RSSParser(Context context, InputStream inputStream, ListView lv) {
        this.context = context;
        this.inputStream = inputStream;
        this.lv = lv;
    }
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog = new ProgressDialog(context);
        progressDialog.setTitle("Parse RSS");
        progressDialog.setMessage("Parsing...Please wait");
        progressDialog.show();
    }
 
 
    @Override
    protected Boolean doInBackground(Void... params) {
        return this.parseRSS();
    }
 
    @Override
    protected void onPostExecute(Boolean isParsed) {
        super.onPostExecute(isParsed);
        progressDialog.dismiss();
        if (isParsed) {
            lv.setAdapter(new CustomAdapter(context, postLists));
        } else {
            Toast.makeText(context, "Unable to parse", Toast.LENGTH_SHORT).show();
        }
    }
 
    private Boolean parseRSS() {
        try {
            factory = XmlPullParserFactory.newInstance();
            parser = factory.newPullParser();
            parser.setInput(inputStream, null);
            int event = parser.getEventType();
            String tagValue = null;
            Boolean isSiteMeta = true;
            postLists.clear();
            PostList postList = new PostList();
            do {
                String tagName = parser.getName();
                switch (event) {
                    case XmlPullParser.START_TAG:
                        if (tagName.contains("offer")) {
                            postList = new PostList();
                            isSiteMeta = false;
                        }
                        break;
                    case XmlPullParser.TEXT:
                        tagValue = parser.getText();
                        break;
                    case XmlPullParser.END_TAG:
                        if (!isSiteMeta) {
                            if (tagName.equalsIgnoreCase("name")) {
                                postList.setTitle(tagValue);
//                            } else if (tagName.equalsIgnoreCase("description")) {
//                                String desc = tagValue;
//                                postList.setDescription(desc);
//                            } else if (tagName.equalsIgnoreCase("picture")) {
////                                String imgUrl = parser.getAttributeValue(null, "url");
//                                String imgUrl = tagValue;
//                                Log.d("TAG", "parseRSS: " + imgUrl);
//                                postList.setImageUrl(imgUrl);
                            }
                        }
                        if (tagName.equalsIgnoreCase("offer")) {
                            postLists.add(postList);
                            isSiteMeta = true;
                        }
                        break;
                }
                event = parser.next();
            } while (event != XmlPullParser.END_DOCUMENT);
            return true;
        } catch (XmlPullParserException | IOException e) {
            e.printStackTrace();
        }
        return false;
    }
}
С таким кодом парсил другой RSS сайт и было норм. Сейчас Unable to Parse. Подскажите гед ошибка?

Custom Adapter
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.example.phantom.rss.R;
import com.example.phantom.rss.SecondActivity;
import com.example.phantom.rss.my_DataObject.PostList;
 
import java.util.ArrayList;
 
/**
 * Created by Phantom on 15.08.2016.
 */
public class CustomAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<PostList> postLists;
 
    public CustomAdapter(Context context, ArrayList<PostList> postLists) {
        this.context = context;
        this.postLists = postLists;
    }
 
    @Override
    public int getCount() {
        return postLists.size();
    }
 
    @Override
    public Object getItem(int position) {
        return postLists.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.model, parent, false);
            TextView titleTxt = (TextView) convertView.findViewById(R.id.titleTxt);
//            ImageView imageView = (ImageView) convertView.findViewById(R.id.articleImage);
            PostList postList = (PostList) this.getItem(position);
            String title = postList.getTitle();
//            String imageUrl = postList.getImageUrl();
            titleTxt.setText(title);
//            PicassoClient.downloadImage(context, imageUrl, imageView);
//            titleTxt.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    String keyArticle = (postLists.get(position).getTitle());
//                    String keyDescription = (postLists.get(position).getDescription());
//                    Intent intent = new Intent(context, SecondActivity.class);
//                    intent.putExtra(SecondActivity.getKeyArticle(), keyArticle);
//                    intent.putExtra(SecondActivity.getKeyDesc(), keyDescription);
//                    context.startActivity(intent);
//                }
//            });
        }
        return convertView;
    }
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2016, 16:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос XML Парсинг (yml) (Программирование Android):

Парсинг XML - Программирование Android
Решил освоить Android написал первое приложение(программка расшифровывает статус контролера банкомата из БД ошибок в формате SQLite и...

Парсинг XML - Программирование Android
Пробую так String data = getIntent().getStringExtra(&quot;data&quot;); try { DocumentBuilderFactory factory =...

Парсинг XML - Программирование Android
try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder =...

Парсинг XML - Программирование Android
Нужно роспарсить XML, который приходть с http://shop.podolyany.com.ua/api/rest/products/. Наверное делаю что-то не так. Вот код, где я хочу...

Парсинг XML на АНДРОИД - Программирование Android
Суть приложения - парсит XML файл с сервера ( извлекает значение тега &lt;bid&gt;). Выводит это значение в текстовое поле. В процесе отладки...

Парсинг xml-файла - Программирование Android
Пытаюсь получить информацию из xml файла, но всегда получаю ошибку. Как это можно исправить? /res/xml/support.xml &lt;?xml...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 16:15 #2
посмотри что за ошибка ловится в catch блоке
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:03  [ТС] #3
Сейчас глянем.

Добавлено через 20 минут
org.xmlpull.v1.XmlPullParserException: name expected

Что это значит? Нет такого имени?

До этог в прошлый раз когда парсил была такая тема

XML
1
2
3
4
5
6
7
8
9
10
11
<item>
  <guid>https://lenta.ru/news/2016/08/27/rosberbelgium/</guid>
  <title>Росберг выиграл квалификацию Гран-при Бельгии</title>
  <link>https://lenta.ru/news/2016/08/27/rosberbelgium/</link>
  <description>
    <![CDATA[Немецкий пилот «Формулы-1» Нико Росберг, выступающий за команду Mercedes, выиграл квалификацию Гран-при Бельгии. Его время — 1 минута 46.744 секунды. Вторым стал голландский пилот Red Bull Макс Ферстаппен. Третью позицию занял финн Кими Райкконен из Ferrari. Россиянин Квят финишировал 19-м.]]>
  </description>
  <pubDate>Sat, 27 Aug 2016 16:32:00 +0300</pubDate>
  <enclosure url="https://icdn.lenta.ru/images/2016/08/27/16/20160827162144012/pic_1b0196deca0a35041617c60df4a1e320.jpg" length="51629" type="image/jpeg"/>
  <category>Спорт</category>
</item>
А сейчас

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<offer id="9878">
<url>
[url]http://ufa.farfor.ru/elections-2016/elections-2016/[/url]
</url>
<name>Выборы-2016</name>
<price>69,00</price>
<description/>
<picture>
[url]http://ufa.farfor.ru/media/menu/products/%D0%9E%D0%B1%D0%BB%D0%BE%D0%B6%D0%BA%D0%B0_%D0%B0%D0%BA%D1%86%D0%B8%D0%B8_-_%D0%9D%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D1%8B_2016.png[/url]
</picture>
<categoryId>31</categoryId>
<param name="Вес">180.00 гр</param>
</offer>
Может не правильно запрос делаю?

Добавлено через 23 минуты
Как забрать элементы: <offer id="9878"> В прошлый раз был без id и продолжения
0
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 17:23 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
PhantomR, вот так у меня парсит нормально:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.cyberforum.parseryandexformattest;
 
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
 
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
 
import java.io.IOException;
import java.io.StringReader;
 
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
 
public class MainActivity extends AppCompatActivity {
 
    public static final String TAG = "tag";
    private final static String urlAddress = "http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN";
    OkHttpClient client = new OkHttpClient();
    Handler handler = new Handler();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        new Thread(r).start();
    }
 
    Runnable r = new Runnable() {
        @Override
        public void run() {
            try {
                final String xml = get(urlAddress);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        parse(xml);
                    }
                });
            } catch (IOException e) {
                Log.d(TAG, "IOException: " + e.toString());
            }
        }
    };
 
    private String get(String url) throws IOException {
        Request request = new Request.Builder()
                .url(url)
                .build();
        Response response = client.newCall(request).execute();
        return response.body().string();
    }
 
    public void parse(String xml) {
        try {
            XmlPullParser xpp = prepareXpp(xml);
 
            while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
                switch (xpp.getEventType()) {
                    case XmlPullParser.START_TAG:
                        Log.d(TAG, "START_TAG - tagName: " + xpp.getName());
                        break;
 
                    case XmlPullParser.END_TAG:
                        Log.d(TAG, "END_TAG - tagName: " + xpp.getName());
                        break;
 
                    case XmlPullParser.TEXT:
                        Log.d(TAG, "TEXT - tagText: " + xpp.getText());
 
                    default:
                        break;
                }
                xpp.next();
            }
        } catch (Exception e) {
            Log.d(TAG, "Exception: " + e.toString());
        }
    }
 
    private XmlPullParser prepareXpp(String rss) throws XmlPullParserException {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();
        xpp.setInput(new StringReader(rss));
        return xpp;
    }
}
1
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:32  [ТС] #5
OkHttpClient - а это библиотека или у вас отдельный класс ещё?

Добавлено через 22 секунды
Спарсингом только 1 раз сталкивался. Сходу не могу все понять.

Добавлено через 54 секунды
Request и Respond тоже не добавляет как класс.

Добавлено через 51 секунду
Всмысле вы подключали какие-то библиотеки ?

Добавлено через 51 секунду
Кажется нашёл. compile 'com.squareup.okhttp:okhttp:2.5.0'
0
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 17:35 #6
compile 'com.squareup.okhttp3:okhttp:3.4.1'
Не важно как делать хттп запрос. Мне так удобнее просто.
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:51  [ТС] #7
Хорошо. А как и где потом выборку делать по какому-либо тэгу?

Что-то у меня в логах тишина.

Добавлено через 10 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
public class MainActivity extends AppCompatActivity {
 
    public static final String TAG = "tag";
    private final static String urlAddress = "http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN";
    OkHttpClient client = new OkHttpClient();
    Handler handler = new Handler();
    private ArrayList<PostList> postLists = new ArrayList<>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        new Thread(r).start();
    }
 
    Runnable r = new Runnable() {
        @Override
        public void run() {
            try {
                final String xml = get(urlAddress);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        parse(xml);
                    }
                });
            } catch (IOException e) {
                Log.d(TAG, "IOException: " + e.toString());
            }
        }
    };
 
    private String get(String url) throws IOException {
        Request request = new Request.Builder()
                .url(url)
                .build();
        Response response = client.newCall(request).execute();
        return response.body().string();
    }
 
    public void parse(String xml) {
        try {
            XmlPullParser xpp = prepareXpp(xml);
            Boolean isSiteMeta = true;
            String tagValue = null;
            postLists.clear();
            PostList postList = new PostList();
            while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
                switch (xpp.getEventType()) {
                    case XmlPullParser.START_TAG:
                        Log.d(TAG, "START_TAG - tagName: " + xpp.getName());
                        if (xpp.getName().equalsIgnoreCase("offer")) {
                            postList = new PostList();
                            isSiteMeta = false;
                        }
                        break;
 
                    case XmlPullParser.END_TAG:
                        Log.d(TAG, "END_TAG - tagName: " + xpp.getName());
                        if (!isSiteMeta) {
                            if (xpp.getName().equalsIgnoreCase("name")) {
                                postList.setName(tagValue);
                                Log.d(TAG, "parse: " + tagValue);
                            }
                        }
                        if (xpp.getName().equalsIgnoreCase("offer")) {
                            postLists.add(postList);
                            isSiteMeta = true;
                        }
                        break;
                    case XmlPullParser.TEXT:
                        tagValue = xpp.getText();
                        Log.d(TAG, "TEXT - tagText: " + xpp.getText());
 
                    default:
                        break;
                }
                xpp.next();
            }
        } catch (Exception e) {
            Log.d(TAG, "Exception: " + e.toString());
        }
    }
 
    private XmlPullParser prepareXpp(String rss) throws XmlPullParserException {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();
        xpp.setInput(new StringReader(rss));
        return xpp;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class PostList {
 
    String name;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
0
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 17:51 #8
ты же логи смотришь по тэгу "tag" ? ))
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:52  [ТС] #9
Само собой) Какой у вас лог?

Добавлено через 1 минуту
Вот, что у меня в логе по этому TAG:

08-27 17:51:25.262 24093-24104/? D/BootAgentService: notifyChange eventId-12
08-27 17:51:33.522 29689-29770/? I/qtaguid: Tagging socket 28 with tag 22b800000000{8888,0} uid -1, pid: 29689, getuid(): 10255
08-27 17:51:33.532 29689-29770/? I/qtaguid: Tagging socket 30 with tag 22b800000000{8888,0} uid -1, pid: 29689, getuid(): 10255
0
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 18:03 #10
log:
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: yml_catalog
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: shop
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: categories
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Лапша
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Сеты
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Роллы
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Суши
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Супы
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Добавки
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Салаты
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Теплое
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Закуски
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Десерты
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Напитки
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: Пицца
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: category
08-27 18:00:53.935 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:



............тут ещё много чего ))


08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: picture
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: http://ufa.farfor.ru/media/menu/prod...0%BA%D1%81.jpg
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: picture
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: categoryId
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: 18
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: categoryId
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: param
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: 1/2 порции
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: param
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: START_TAG - tagName: param
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText: 150.00 гр
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: param
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: offer
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: offers
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:

08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: shop
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: TEXT - tagText:
08-27 18:00:54.135 13451-13451/com.cyberforum.parseryandexformattest D/tag: END_TAG - tagName: yml_catalog
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 19:10  [ТС] #11
ну вообще странно

Добавлено через 8 минут
Спасибо! Всё заработало!Забыл про Permission.

И библиотеку изучу. !

Добавлено через 40 секунд
"спасибо" и "лучший ответ" вам! (целый день бился)

Добавлено через 53 минуты
Добрый человек. Подскажите ещё как распарсить такой элемент?
XML
1
2
<param name="Диаметр">40см</param>
<param name="Вес">980.00 гр</param>
Мне нужен только вес.

Java
1
2
3
if (xpp.getName().equalsIgnoreCase("param")) {                       
                                String weight = tagValue;
                                postList.setImageUrl(weight);
Так я получаю оба параметра. Какое ещё условие добавить, чтобы был только вес?
0
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 19:30 #12
Там где case - XmlPullParser.START_TAG: - должно быть что-то типо:
Java
1
2
3
if("param".equals(xpp.getName()) && xpp.getAttributeCount() > 0 && "Вес".equals(xpp.getAttributeName(0))) {
String weight = xpp.nextText()
}
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 19:39  [ТС] #13
А если там где case XmlPullParser.END_TAG? Можно перефразировать?
Т.к. у меня такая структура.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
                switch (xpp.getEventType()) {
                    case XmlPullParser.START_TAG:
                        if (xpp.getName().equalsIgnoreCase("offer")) {
                            postList = new PostList();
                            isSiteMeta = false;
                        }
                        break;
 
                    case XmlPullParser.END_TAG:
                        if (!isSiteMeta) {
                            if (xpp.getName().equalsIgnoreCase("name")) {
                                postList.setName(tagValue);
                            } else if (xpp.getName().equalsIgnoreCase("description")) {
                                postList.setDescription(tagValue);
                            } else if (xpp.getName().equalsIgnoreCase("price")) {
                                postList.setPrice(tagValue);
                            } else if (xpp.getName().equalsIgnoreCase("picture")) {
                                postList.setImageUrl(tagValue);
                            } else if (xpp.getName().equalsIgnoreCase("param") && xpp.getAttributeCount() > 0 && "Вес".equals(xpp.getAttributeName(0))) {
                                // String weight = xpp.getAttributeValue(null, "Диаметр");
                                postList.setWeight(tagValue);
                            }
                        }
                        if (xpp.getName().equalsIgnoreCase("offer")) {
                            postLists.add(postList);
                            isSiteMeta = true;
                        }
                        break;
                    case XmlPullParser.TEXT:
                        tagValue = xpp.getText();
 
                    default:
                        break;
                }
                xpp.next();
            }
0
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 655
27.08.2016, 19:50 #14
придётся переделывать структуру ))
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 19:52  [ТС] #15
А иначе никак?

Просто как я понимаю. Есть START_TAG, если есть offer берём данные оттуда. END_TAG уже глубже какие данные берем или я не так понимаю вообще?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2016, 19:52
Привет! Вот еще темы с ответами:

XML HTTP парсинг - Программирование Android
Здравствуйте. На сервере есть тестовый php файл с сontent-type: text/xml. Он выводит сообщения с базы....

Парсинг XML по URL - Программирование Android
Нужно взять строку из тега &lt;company&gt; отсюда xml. Можно как-то обойтись без циклов?

Парсинг большого xml - Программирование Android
Если есть большой JSON его можно парсить при помощи библиотеки gson, а если есть большой xml как этот https://lenta.ru/rss. Чем его лучше...

Парсинг xml из файла на сервере - Программирование Android
Добрый день! Есть код, который по идее парсит данные из xml файла, но почему-то не отображается ничего на экране. Где-то ошибка, помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.08.2016, 19:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru