Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 20

Парсинг XML не идёт разбор документа

04.10.2014, 14:24. Показов 1183. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно есть код, который с малыми изменениями пользую давно. Сейчас чего-то не хочет читать XML-ку:
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
    public List<URLxmlList> parseXML(){
        urlList = null;
        
        Log.d("URLlist", "urlList - null");
        if ((activitySet==true)&&(activity!=null)){
            Log.d("URLlist", "(activitySet==true)&&(activity!=null)");
            
            Context context = getActivity().getBaseContext();
            InputStream is = context.getResources().openRawResource(R.xml.urls);
            Log.d("URLlist", "InputStream");
            Log.d("URLlist", is.toString());
            try {
                urlList = new ArrayList<URLxmlList>();
                Log.d("URLlist", "new ArrayList");
                
                SAXParserFactory factory = SAXParserFactory.newInstance();
                Log.d("URLlist", "factory = SAXParserFactory.newInstance");
                SAXParser saxParser = factory.newSAXParser();
                Log.d("URLlist", "saxParser = factory.newSAXParser()");
                XMLReader xmlReader = saxParser.getXMLReader();     
                Log.d("URLlist", "xmlReader = saxParser.getXMLReader()");
                URLHandler urlHandler = new URLHandler();
                Log.d("URLlist", "urlHandler = new URLHandler()");
                xmlReader.setContentHandler(urlHandler);
                Log.d("URLlist", "xmlReader.setContentHandler(urlHandler)");
                InputSource inputSource = new InputSource(is);
                Log.d("URLlist", "inputSource");
                xmlReader.parse(inputSource);
                Log.d("URLlist", "xmlReader.parse(inputSource)");
                Log.d("URLlist", inputSource.toString());
                
                // Проверка чтения файла 
                /*InputStreamReader inputreader = new InputStreamReader(is);
                BufferedReader bufferedreader = new BufferedReader(inputreader);
                String line;
                //StringBuilder stringBuilder = new StringBuilder();
                try 
                {
                    while (( line = bufferedreader.readLine()) != null) 
                    {
                        Log.d("READXMLFILE", line);
                    }
                } 
                catch (Exception e){
                    //
                }*/
                                    
             } 
            //catch (IOException| SAXException |ParserConfigurationException e) {
            catch (Exception e) {
                //urlResult= (e.getMessage());
             } 
            
        }
        return urlList;
    }
    
    static private class URLHandler extends DefaultHandler {
        boolean _Item=false;
        boolean _Title=false;
        boolean _Link=false;
        URLxmlList rssAtom;
        public void startDocument() throws SAXException {
            System.out.println("start document   : ");
            Log.d("PARCE", "start document");
        }
 
        public void endDocument() throws SAXException {
            System.out.println("end document     : ");
            Log.d("PARCE", "end document");
        }
 
        public void startElement(String uri, String localName,
            String qName, Attributes attributes)
        throws SAXException {
            Log.d("PARCE", "start element");
            System.out.println("start element    : " + qName);
            if (qName.equals("item")){
                _Item=true;
                rssAtom = new URLxmlList();
                Log.d("startElemnt", qName + " item");
                System.out.println("start element    : " + qName);
            }
            else if (qName.equals("title")){
                _Title=true;
                Log.d("startElemnt", qName + " title");
                System.out.println("start element    : " + qName);
            }
            
            else if (qName.equals("link")){
                _Link=true;
                Log.d("startElemnt", qName  + " link");
                System.out.println("start element    : " + qName);
            }
        }
 
        public void endElement(String uri, String localName, String qName)
        throws SAXException {
            System.out.println("end element      : " + qName);
            if (qName.equals("item")){
                //Log.d("endElemnt", qName);
                _Item=false;
                urlList.add(rssAtom);
                //System.out.println("end element      : " + qName);
                Log.d("PARCE", "end element" + qName);
            }
            else if (qName.equals("title")){
                //Log.d("endElemnt", qName);
                _Title=false;
                Log.d("PARCE", "end element"+ qName);
            }
            else if (qName.equals("link")){
                _Link=false;
                Log.d("PARCE", "end element"+ qName);
            }
            Log.d("PARCE", "end element");
        }
 
        public void characters(char ch[], int start, int length)
        throws SAXException {
            Log.d("characters","....");
            if (_Item==true){
                
                if(_Title){
                    if (rssAtom.getTitle()!=null) {
                        rssAtom.setTitle(rssAtom.getTitle() + (new String(ch, start, length)));
                    }
                    else {
                        rssAtom.setTitle(new String(ch, start, length));
                    }
                    //Log.d("TITLE", rssAtom.getTitle());
                }
                else if(_Link){
                    rssAtom.setUrl(new String(ch, start, length));
                }
                
            }
            
        }
 
        
        
    }
Сам файл читается нормально - есть закаменченный кусок кода, который просто читает файл без разбора и тут проблем нет.
Проблема начинается на этапе разбора. startDocument происходит, а вот остальной участок выпадает (startElement, endElement, characters, endDocuments)


JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
10-04 10:11:25.639: D/XML(1276): Start xml reading
10-04 10:11:25.639: D/URLlist(1276): urlList - null
10-04 10:11:25.639: D/URLlist(1276): (activitySet==true)&&(activity!=null)
10-04 10:11:25.651: D/URLlist(1276): InputStream
10-04 10:11:25.651: D/URLlist(1276): android.content.res.AssetManager$AssetInputStream@40cee7a8
10-04 10:11:25.651: D/URLlist(1276): new ArrayList
10-04 10:11:25.658: D/URLlist(1276): factory = SAXParserFactory.newInstance
10-04 10:11:25.658: D/URLlist(1276): saxParser = factory.newSAXParser()
10-04 10:11:25.668: D/URLlist(1276): xmlReader = saxParser.getXMLReader()
10-04 10:11:25.668: D/URLlist(1276): urlHandler = new URLHandler()
10-04 10:11:25.668: D/URLlist(1276): xmlReader.setContentHandler(urlHandler)
10-04 10:11:25.678: D/URLlist(1276): inputSource
10-04 10:11:25.678: I/System.out(1276): start document   : 
10-04 10:11:25.678: D/PARCE(1276): start document
10-04 10:11:25.688: D/XML(1276): Start esp
10-04 10:11:25.688: D/XML(1276): 0
10-04 10:11:25.688: D/XML(1276): End xml reading
10-04 10:11:25.688: D/listTitles(1276): ---------------------------
У меня похожая ошибка была с путаницей

import java.util.jar.Attributes;
и
import org.xml.sax.Attributes;

Сейчас её нет, но ошибка есть. Чего-то нехватает
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
 
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
 
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
 
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
 
import java.util.ArrayList;
import java.util.List;
Может кто-то подсказать, чего я не вижу своим замыленным глазом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2014, 14:24
Ответы с готовыми решениями:

Разбор / парсинг XML
Имеется XML файл: &lt;?xml version=&quot;1.0&quot; encoding=&quot;WINDOWS-1251&quot;?&gt; &lt;ФайлПФР&gt; &lt;СПИСОК_НА_ЗАЧИСЛЕНИЕ&gt; &lt;СведенияОполучателе&gt; ...

Разбор XML-документа
Доброго времени суток. Есть вот такой XML-документ. XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(filePath); XmlElement...

Разбор XML-документа в Oracle
День добрый! Пытаюсь разобраться в новой для себя теме - разбор XML-документа в ORACLE 9i. Плз, подскажите, в какую сторону думать,...

6
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
04.10.2014, 14:46
Skifych, Попробуйте поставить @Override над методами: может у вас сигнатуры методов неправильные.
0
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 20
04.10.2014, 15:30  [ТС]
Увы, не то. Покрайней мере прибавки к карме не получил, ситуация не изменилась: startElement и т.д. не срабатывают. Может что-то не правильно в структуре xml_ки?
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0"?>
<rsslist>
    <item>
        <title>ABC</title>
        <link>http://urls</link>
    </item> 
    <item>
        <title>DEF</title>
        <link>http://urls2</link>
    </item> 
...
</rsslist>
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
04.10.2014, 15:38
Цитата Сообщение от Skifych Посмотреть сообщение
Java
50
51
52
catch (Exception e) {
    //urlResult= (e.getMessage());
}
Выведите куда-нибудь этот Exception. Скорее всего причина в нем.
0
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 20
04.10.2014, 16:33  [ТС]
точно! Как я его выпустил из вида
JSON
1
10-04 11:50:06.519: D/ERROR(1051): At line 1, column 0: not well-formed (invalid token)
Добавлено через 31 минуту
замена на
XML
1
<?xml version="1.0" encoding="UTF-8"?>
Ситуацию не поменяла. Создание нового файла, игра с кодировками - всё в пустую.

Добавлено через 9 минут
принудительное
Java
1
inputSource.setEncoding("UTF-8");
тоже не дало эффекта.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
04.10.2014, 17:39
Skifych, может приложите документ в виде файла?
Очень часто помогает просмотр stacktrace исключения.
0
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 20
05.10.2014, 17:26  [ТС]
http://myupy.ru/52154116c
Вот ссылка на файл (urls.xml)

Добавлено через 22 часа 57 минут
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
10-05 13:25:06.726: D/ERROR(2109): At line 1, column 0: not well-formed (invalid token)
10-05 13:25:06.726: D/ERROR(2109): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: not well-formed (invalid token)
10-05 13:25:06.726: D/ERROR(2109):  at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:499)
10-05 13:25:06.726: D/ERROR(2109):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:484)
10-05 13:25:06.726: D/ERROR(2109):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:309)
10-05 13:25:06.726: D/ERROR(2109):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:267)
10-05 13:25:06.726: D/ERROR(2109):  at com.itwell.skif.strelkovtsev.src.ParseXMLurlList.parseXML(ParseXMLurlList.java:81)
10-05 13:25:06.726: D/ERROR(2109):  at com.itwell.skif.strelkovtsev.src.StartPage.onCreate(StartPage.java:45)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.Activity.performCreate(Activity.java:5104)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
10-05 13:25:06.726: D/ERROR(2109):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-05 13:25:06.726: D/ERROR(2109):  at android.os.Looper.loop(Looper.java:137)
10-05 13:25:06.726: D/ERROR(2109):  at android.app.ActivityThread.main(ActivityThread.java:5041)
10-05 13:25:06.726: D/ERROR(2109):  at java.lang.reflect.Method.invokeNative(Native Method)
10-05 13:25:06.726: D/ERROR(2109):  at java.lang.reflect.Method.invoke(Method.java:511)
10-05 13:25:06.726: D/ERROR(2109):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-05 13:25:06.726: D/ERROR(2109):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-05 13:25:06.726: D/ERROR(2109):  at dalvik.system.NativeStart.main(Native Method)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2014, 17:26
Помогаю со студенческими работами здесь

Парсинг xml документа на Си
Здравствуйте! Подскажите пожалуйста статью или руководство где описывается как парсить xml документ на Си или хотя бы на С++(желательно...

Парсинг xml документа
Имеется документ типа &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot;?&gt; &lt;data&gt; &lt;users&gt; &lt;user&gt; ...

Парсинг xml документа
Доброе время суток. Помогите пожалуйста, получить данные из xml документа &lt;?xml version=&quot;1.0&quot;...

Парсинг XML документа
Скажите пожалуйста что не так с этим простым кодом? не хочет дать мне XML документ, путь правильный, XML файл правильный if...

Парсинг xml документа
Здравствуйте, Объясните пожалуйста как сделать парсинг xml документа. Что бы не просто парсинг а именно что бы сначала...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru