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

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

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

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

27.08.2016, 16:06. Просмотров 574. Ответов 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...

16
Mikalai
261 / 237 / 95
Регистрация: 11.01.2015
Сообщений: 663
27.08.2016, 20:00 #16
START_TAG - <param name="Вес">
TEXT - 980.00 гр
END_TAG - </param>
В END_TAG нету атрибутов
0
PhantomR
5 / 5 / 0
Регистрация: 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 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 файла, но почему-то не отображается ничего на экране. Где-то ошибка, помогите...


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

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

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