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

XMLPullParser чтение русских символов - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Notification , BroadcastReceiver http://www.cyberforum.ru/android-dev/thread975810.html
в программе мне нужно реализовать "свой системный звук" . К примеру в папке \res\raw есть звук shot.ogg и он должен звучать в фоновом режиме или даже если запущенны другие программы. Как лучше сделать ,через Notification или есть попроще пути? Да, и если через Notification то будет ли это работать в BroadcastReceiver ?
Программирование Android CyanogenMod на alcatel 6010x Привет всем! Такой вопрос: Можно ли поставить CyanogenMod на alcatel 6010x? Если да, то можно инструкцию? Если нет, то помогите поставить руты! Кому не трудно - можно в скайп: xpehamet http://www.cyberforum.ru/android-dev/thread975658.html
Программирование Android Программно поставить android:password="false"
Имеем в main.xml: <EditText android:id="@+id/etPass" android:password="true" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1"> </EditText> <CheckBox android:id="@+id/cbShowPass"
Программирование Android реакция на нажатие
Напишите пожалуйста примерчик. Я хотел сделать такую штуку, есть картинка животного. Там где глаза, пусть будет белый фон. Точка зрачка будет отдельно. Как можно сделать так, что бы в области глаза, зрачек двигался в сторону нажатия)
Программирование Android Непонятный феномен с дебагом http://www.cyberforum.ru/android-dev/thread975011.html
1) эксцепшин поймать невозможно 2) первый брейкпоинт не срабатывает 3) неправильно обрабатывает условие И главное - раньше всё работало. Короче, взгляните на скрин.
Программирование Android Реально ли из диалогового окна запустить активити? Сразу скажу, речь не о том диалоговом окне, о котором я писал в теме "Дождаться закрытия диалога", так что переделывать не страшно. В диалоговом окне есть поле "Клиент". Это поле должно заполняться путем выбора из списка. Реально ли из диалогового окна запустить активити со списком клиентов, чтобы выбрать значение, закрыть это активити и передать в диалоговое окно? Т.е. схема такая: Список... подробнее

Показать сообщение отдельно
Eddie_Brock
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 3

XMLPullParser чтение русских символов - Программирование Android

12.10.2013, 23:23. Просмотров 1101. Ответов 4
Метки (Все метки)

Здравствуйте. Согласно заданию, необходимо написать парсер, который будет эммм... парсить(масло масленое) вот эту вот страницу http://www.cbr.ru/scripts/XML_News.asp
До первой русской буквы, т.е. И в слове Информация все вроде как идет неплохо, а дальше выкидывает со словами well-formed (invalid token). Я так понимаю, проблема в кодировке. Вот собственно парсер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public List<HashMap<String, String>> MyParse(InputStream iStream) 
            throws XmlPullParserException, IOException{
        try{
            XmlPullParser MParser = Xml.newPullParser();
            MParser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            MParser.setInput(iStream, "UTF-8");
            MParser.nextTag();
//            Log.d("Parser", MParser.toString());
            return BeginParsingNews(MParser);
        }
        finally{
            iStream.close();
        }
    }
Вот так непосредственно текст читается, после определения конкретного тега вызывается функция readText:
Java
1
2
3
4
5
6
7
8
9
10
private String readText(XmlPullParser MParser) 
            throws IOException, XmlPullParserException {
        // TODO Auto-generated method stub
        String result = "";
        if(MParser.next() == XmlPullParser.TEXT) {
            result = MParser.getText();
            MParser.nextTag();
        }
        return result;
    }
Гуглил, менял кодировки в setInput, ставил null, windows-1251 и даже вот так HTTP.UTF-8, не знай, зачем правда. Это моя 2я прога в Android, да и вообще опыта программирования не то чтобы много. На форуме к слову в первый раз спрашиваю, так что камнями не закидывайте плз, если что-то не так спросил или оформил. Прогу сдавать уже скоро, поэтому времени, чтобы еще 2-3 дня сидеть гуглить, у меня нет.

Добавлено через 5 минут
На всякий случай скину весь код парсера:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.example.myfuck;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.io.InputStream;
import org.apache.http.protocol.HTTP;
 
import android.util.Log;
import android.util.Xml;
 
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
 
public class MyParser {
    
    private static final String fStr = null;
    
    public List<HashMap<String, String>> MyParse(InputStream iStream) 
            throws XmlPullParserException, IOException{
        try{
            XmlPullParser MParser = Xml.newPullParser();
            MParser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            MParser.setInput(iStream, "UTF-8");
            MParser.nextTag();
//            Log.d("Parser", MParser.toString());
            return BeginParsingNews(MParser);
        }
        finally{
            iStream.close();
        }
    }
    
    private List<HashMap<String, String>> BeginParsingNews(
            XmlPullParser MParser) throws IOException, XmlPullParserException {
        // TODO Auto-generated method stub
        List<HashMap<String, String>> MyList = new ArrayList<HashMap<String,String>>();
        
        MParser.require(XmlPullParser.START_TAG, fStr, "News");
        
        while(MParser.next() != XmlPullParser.END_TAG) {
            if(MParser.getEventType() != XmlPullParser.START_TAG) {
                continue;
            }
            String name = MParser.getName();
            if(name.equals("Item")){
                MyList.add(readItem(MParser));
            }
            else{
                skip(MParser);
            }
        }
        return MyList;
    }
    
    private HashMap<String, String> readItem(XmlPullParser MParser) 
            throws IOException, XmlPullParserException {
        // TODO Auto-generated method stub
        MParser.require(XmlPullParser.START_TAG, fStr, "Item");
        
        String dateItem = "";
        String urlItem = "";
        String titleItem = "";
        
        while (MParser.next() != XmlPullParser.END_TAG) {
            if(MParser.getEventType() != XmlPullParser.START_TAG){
                continue;
            }
            
            String name = MParser.getName();
            
            if(name.equals("Date")) {
                dateItem = readDate(MParser);
            } else if (name.equals("Url")) {
                urlItem = readUrl(MParser);
            } else if (name.equals("Title")) {
                titleItem = readTitle(MParser);
            } else {
                skip(MParser);
            }
        }
        
        String data = "Url: " + urlItem + "\n" +
                      "Title: " + titleItem;
        
        HashMap<String, String> hMap = new HashMap<String, String>();
        hMap.put("Date", dateItem);
        hMap.put("Data", data);
        
        return hMap;
    }
    
    private String readDate(XmlPullParser MParser) 
            throws XmlPullParserException, IOException {
        // TODO Auto-generated method stub
        MParser.require(XmlPullParser.START_TAG, fStr, "Date");
        String date = readText(MParser);
        MParser.require(XmlPullParser.END_TAG, fStr, "Date");
        return date;
    }
    
    private String readUrl(XmlPullParser MParser) 
            throws XmlPullParserException, IOException {
        // TODO Auto-generated method stub
        MParser.require(XmlPullParser.START_TAG, fStr, "Url");
        String url = readText(MParser);
        MParser.require(XmlPullParser.END_TAG, fStr, "Url");
        return url;
    }
    
    private String readTitle(XmlPullParser MParser) 
            throws XmlPullParserException, IOException {
        // TODO Auto-generated method stub
        MParser.require(XmlPullParser.START_TAG, fStr, "Title");
        String title = readText(MParser);
        MParser.require(XmlPullParser.END_TAG, fStr, "Title");
        return title;
    }
    
    private String readText(XmlPullParser MParser) 
            throws IOException, XmlPullParserException {
        // TODO Auto-generated method stub
        String result = "";
        if(MParser.next() == XmlPullParser.TEXT) {
            result = MParser.getText();
            MParser.nextTag();
        }
        return result;
    }
    
    private void skip(XmlPullParser MyParsing) 
            throws XmlPullParserException, IOException {
        // TODO Auto-generated method stub
        if(MyParsing.getEventType() != XmlPullParser.START_TAG) {
            throw new IllegalStateException();
        }
        int depth = 1;
        while (depth != 0) {
            switch (MyParsing.next()) {
            case XmlPullParser.END_TAG:
                depth--;
                break;
            case XmlPullParser.START_TAG:
                depth++;
                break;
            }
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru