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

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

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

XML Парсинг (yml) - Android

27.08.2016, 16:06. Просмотров 373. Ответов 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;
    }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2016, 16:06     XML Парсинг (yml)
Посмотрите здесь:

Android Парсинг XML документа по URL
Android Парсинг xml из файла на сервере
Android Парсинг XML
Парсинг XML Android
Android Парсинг XML на АНДРОИД
Android Парсинг XML
Парсинг XML по URL Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 16:15     XML Парсинг (yml) #2
посмотри что за ошибка ловится в catch блоке
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:03  [ТС]     XML Парсинг (yml) #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 и продолжения
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 17:23     XML Парсинг (yml) #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;
    }
}
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:32  [ТС]     XML Парсинг (yml) #5
OkHttpClient - а это библиотека или у вас отдельный класс ещё?

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

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

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

Добавлено через 51 секунду
Кажется нашёл. compile 'com.squareup.okhttp:okhttp:2.5.0'
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 17:35     XML Парсинг (yml) #6
compile 'com.squareup.okhttp3:okhttp:3.4.1'
Не важно как делать хттп запрос. Мне так удобнее просто.
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:51  [ТС]     XML Парсинг (yml) #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;
    }
}
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 17:51     XML Парсинг (yml) #8
ты же логи смотришь по тэгу "tag" ? ))
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 17:52  [ТС]     XML Парсинг (yml) #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
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 18:03     XML Парсинг (yml) #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
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 19:10  [ТС]     XML Парсинг (yml) #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);
Так я получаю оба параметра. Какое ещё условие добавить, чтобы был только вес?
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 19:30     XML Парсинг (yml) #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()
}
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 19:39  [ТС]     XML Парсинг (yml) #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();
            }
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 19:50     XML Парсинг (yml) #14
придётся переделывать структуру ))
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
27.08.2016, 19:52  [ТС]     XML Парсинг (yml) #15
А иначе никак?

Просто как я понимаю. Есть START_TAG, если есть offer берём данные оттуда. END_TAG уже глубже какие данные берем или я не так понимаю вообще?
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
27.08.2016, 20:00     XML Парсинг (yml) #16
START_TAG - <param name="Вес">
TEXT - 980.00 гр
END_TAG - </param>
В END_TAG нету атрибутов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2016, 13:42     XML Парсинг (yml)
Еще ссылки по теме:

XML HTTP парсинг Android
Android Парсинг XML с помощью Jsoup
Парсинг XML Android
Парсинг xml-файла Android
Android Парсинг большого xml

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

Или воспользуйтесь поиском по форуму:
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
28.08.2016, 13:42  [ТС]     XML Парсинг (yml) #17
Как всё просто и как глупо у меня написано всё значит)

Добавлено через 16 минут
Завтра продолжу думать, как всё поправить.

Добавлено через 17 часов 24 минуты
Не смог переделать всё. Пока решил проблему хитрым способом, т.к. в весе всегда есть граммы.

В END TAG написал.
Java
1
2
3
         } else if (xpp.getName().equalsIgnoreCase("param") ) {
                                if (tagValue.contains("гр")){
                                    postList.setWeight(tagValue);
Yandex
Объявления
28.08.2016, 13:42     XML Парсинг (yml)
Ответ Создать тему
Опции темы

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