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

Android, XML ошибка при парсинге, универсальный парсер - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка "The constructor is undefined" при работе с адаптерами http://www.cyberforum.ru/android-dev/thread1045692.html
Доброго времени суток! Пишу курсовую работу, нужно написать расписание занятий на андроид используя SQLite.Начал создавать свой адаптер и столкнулся с небольшой проблемой import...
Программирование Android Программно перемещать элементы на экране На экране несколько ImageView элементов. Их нужно перемещать на экране. В Windows было просто объект.left , или .top ... и все легко "ездило" по координатной сетке. При программировании интерфейса на... http://www.cyberforum.ru/android-dev/thread1045526.html
Организация структуры объектов Программирование Android
Всем привет! Хочу задать вопрос по поводу организации структуры объектов в игре для дальнейшей обработки коллизий: например есть у меня класс World - уровень На уровне есть кирпич, игроки и...
Объясните про поля класса Программирование Android
Всем привет. Объясните, пжл., почему когда я в полях класса идентифицирую какую-нибудь view (например, вот так): EditText edTexEnterInterval = (EditText) findViewById(R.id.edTexEnterInterval); то...
Программирование Android Остановка зацикленого потока http://www.cyberforum.ru/android-dev/thread1044763.html
Есть активити. Из него запускается сервис. В методе onStartCommand сервиса, запускается поток, в котором присутствует бесконечный цикл. При остановке сервиса из активити, поток продолжает работать....
Программирование Android GPS Tracker Функционал: шлёт GPS координаты по UDP. Струкутра: Activity - запускает и останавливает сервис, отображает кол-во отправленных и принятых пакетов, позволяет менять некоторые настройки (частота... подробнее

Показать сообщение отдельно
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5

Android, XML ошибка при парсинге, универсальный парсер - Программирование Android

17.12.2013, 19:19. Просмотров 682. Ответов 0
Метки (Все метки)

У меня возникла проблема при парсинге (xmlPullParser), выдает ошибку, лог:
Код
12-17 17:10:08.355: W/System.err(28761): org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT @1:2 in java.io.InputStreamReader@428a04b8) 
12-17 17:10:08.365: W/System.err(28761): 	at org.kxml2.io.KXmlParser.next(KXmlParser.java:426)
12-17 17:10:08.365: W/System.err(28761): 	at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
12-17 17:10:08.365: W/System.err(28761): 	at ru.homeandroid.MainActivity$XMLDownloader.processRecivedData(MainActivity.java:192)
12-17 17:10:08.370: W/System.err(28761): 	at ru.homeandroid.XmlDownload.tryParsingXmlData(XmlDownload.java:53)
12-17 17:10:08.370: W/System.err(28761): 	at ru.homeandroid.XmlDownload.doInBackground(XmlDownload.java:29)
12-17 17:10:08.370: W/System.err(28761): 	at ru.homeandroid.XmlDownload.doInBackground(XmlDownload.java:1)
12-17 17:10:08.370: W/System.err(28761): 	at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-17 17:10:08.370: W/System.err(28761): 	at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-17 17:10:08.370: W/System.err(28761): 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-17 17:10:08.370: W/System.err(28761): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-17 17:10:08.370: W/System.err(28761): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-17 17:10:08.370: W/System.err(28761): 	at java.lang.Thread.run(Thread.java:841)
Вызов:
Java
1
2
XMLDownloader downloader = new XMLDownloader("http://server.ru/script.php"); 
                downloader.execute();
Сам код:
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
    class XMLDownloader extends XmlDownload{ 
        public XMLDownloader(String url) {  //construct
            super(url);
        }
 
        public String TAG="MyLog";
                                                                    
        void processRecivedData(XmlPullParser xmlData) throws XmlPullParserException, IOException { 
            int eventType = -1; 
            int recordsFound = 0; 
             
            String tagName = "", login = "", pass = "", status = "";
             
            while(eventType!=XmlResourceParser.END_DOCUMENT) 
            { 
                switch(eventType)  
                { 
                    case XmlResourceParser.START_TAG: 
                    tagName=xmlData.getName();  
                    Log.d(TAG, "Text_TAGNAME: <"+tagName+">");
                    break; 
                    
                    case XmlResourceParser.TEXT:
                        Log.d(TAG, "Text_TAGNAME: <"+tagName+">"+xmlData.getText()+"</"+tagName+">");
                        if(TextUtils.equals(tagName,"login")) {login = xmlData.getText(); }
                        if(TextUtils.equals(tagName,"pass")) { pass = xmlData.getText();}
                        if(TextUtils.equals(tagName,"status")) {status = xmlData.getText(); }
                        break;
 
                     case XmlResourceParser.END_TAG:
                          recordsFound++; 
                          tagName = "";
                          if ("item".equals(xmlData.getName())) {
                                  publishProgress(login, pass, status);
                          }
                     break;
                
                  default:  break;
                } 
                
                eventType=xmlData.next(); 
                 
                if(recordsFound==0){ 
                    publishProgress(); 
                } 
            }    
        } 
 
 
         
        @Override 
        protected void onProgressUpdate(String... values){      
            if(values.length>1) 
            { 
                String login = values[0], pass = values[1], status = values[2];
                MainActivity.this.checkOutOfSever(login,pass,status); 
            }
            super.onProgressUpdate(values); 
        }
        
        
       @Override 
       protected void onPostExecute(Integer result) {           //действие после полной загрузки XML 
 
 
       } 
    }
Класс XmlDownload:
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
public abstract class XmlDownload extends AsyncTask<Object, String, Integer>{
 
    private String serverRequest;
    
    public XmlDownload(String url){
        serverRequest=url;
    }
    
    @Override 
    protected Integer doInBackground(Object... params) { 
         
        XmlPullParser recivedData = null; 
        try { 
            recivedData = tryDownloadingXmlData(); 
        } catch (IOException e) { e.printStackTrace();  } 
        int recordsFound = 0; 
        try { 
            recordsFound = tryParsingXmlData(recivedData); 
        } catch (XmlPullParserException e) {  e.printStackTrace(); } 
        catch (IOException e) { e.printStackTrace(); } 
        return recordsFound; 
    } 
    
    private XmlPullParser tryDownloadingXmlData() throws IOException {     
        try{ 
        URL xmlUrl = new URL(serverRequest); 
        
        XmlPullParser recivedData = XmlPullParserFactory.newInstance().newPullParser(); 
        recivedData.setInput(xmlUrl.openStream(),"UTF8"); 
        
        return recivedData; 
        }  
        catch(XmlPullParserException e){ } 
        catch(IOException e) { } 
        return null; 
    } 
     
     
    private int tryParsingXmlData(XmlPullParser recivedData) throws XmlPullParserException, IOException { 
        if(recivedData != null) 
        { 
            processRecivedData(recivedData); 
        } 
        return 0; 
    } 
    
    abstract  void processRecivedData(XmlPullParser xmlData) throws XmlPullParserException, IOException;
    
}
XML - сообщение которое получаю от сервера:
XML
1
2
3
4
5
6
7
8
п»ї<?xml version="1.0" encoding="utf-8" ?>
<message>
  <item>
    <login>sanu0074</login>
    <pass>pwd1</pass>
    <status>ok_1</status>
  </item>
</message>
Непойму в чем дело, до этого работало когда-то, пока не поменял структуру сайта.

И еще вопрос, можно ли как-то все это сделать более универсальным, например чтобы создавать экземпляр XmlDownload, в которые вернется объект со свойствами {field1:val,field2:val, ...}, где каждое field - будет соответствовать тэгу в XML-сообщение, так хочется сделать чтобы для каждого activity и каждого скрипта на сервере не лепить собственный processRecivedData(), можно ли так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru