Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
1

XML Парсинг (yml)

27.08.2016, 16:06. Просмотров 719. Ответов 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
try { DocumentBuilderFactory factory =...

Парсинг XML
Пробую так String data = getIntent().getStringExtra(&quot;data&quot;); try...

Парсинг XML
Решил освоить Android написал первое приложение(программка расшифровывает...

Парсинг XML
Нужно роспарсить XML, который приходть с...

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

16
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
27.08.2016, 16:15 2
посмотри что за ошибка ловится в catch блоке
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
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
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
27.08.2016, 17:23 4
Лучший ответ Сообщение было отмечено PhantomR как решение

Решение

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 / 1
Регистрация: 04.02.2016
Сообщений: 78
27.08.2016, 17:32  [ТС] 5
OkHttpClient - а это библиотека или у вас отдельный класс ещё?

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

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

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

Добавлено через 51 секунду
Кажется нашёл. compile 'com.squareup.okhttp:okhttp:2.5.0'
0
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
27.08.2016, 17:35 6
compile 'com.squareup.okhttp3:okhttp:3.4.1'
Не важно как делать хттп запрос. Мне так удобнее просто.
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
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
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
27.08.2016, 17:51 8
ты же логи смотришь по тэгу "tag" ? ))
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
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
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
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 / 1
Регистрация: 04.02.2016
Сообщений: 78
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
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
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 / 1
Регистрация: 04.02.2016
Сообщений: 78
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
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
27.08.2016, 19:50 14
придётся переделывать структуру ))
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
27.08.2016, 19:52  [ТС] 15
А иначе никак?

Просто как я понимаю. Есть START_TAG, если есть offer берём данные оттуда. END_TAG уже глубже какие данные берем или я не так понимаю вообще?
0
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 670
27.08.2016, 20:00 16
START_TAG - <param name="Вес">
TEXT - 980.00 гр
END_TAG - </param>
В END_TAG нету атрибутов
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
28.08.2016, 13:42  [ТС] 17
Как всё просто и как глупо у меня написано всё значит)

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

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

В END TAG написал.
Java
1
2
3
         } else if (xpp.getName().equalsIgnoreCase("param") ) {
                                if (tagValue.contains("гр")){
                                    postList.setWeight(tagValue);
0
28.08.2016, 13:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2016, 13:42

Парсинг большого xml
Если есть большой JSON его можно парсить при помощи библиотеки gson, а если...

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

Парсинг XML URL
Нужно распарсить XML страницу имея Апи ключ, в инструкции АПИ сказано: &quot;Для...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

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