Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
#1

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

12.06.2013, 13:36. Просмотров 2655. Ответов 34
Метки нет (Все метки)

Пробую так
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
String data = getIntent().getStringExtra("data");
        
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(data);
            NodeList nodes = doc.getElementsByTagName("userInfo");
            Element element = (Element) nodes.item(0);
            NodeList title = ((Document) element).getElementsByTagName("string");
            for (int i = 0; i<4;i++) {
                Element line = (Element) title.item(i);
                userInfo.setContent(line.getName(), ((Node) line).getTextContent());
            }
            Log.d("m", userInfo.getIdName());
        } catch (ParserConfigurationException e1) {
            Log.d("m", "1");
            e1.printStackTrace();
        } catch (SAXException e) {
            Log.d("m", "2");
            e.printStackTrace();
        } catch (IOException e) {
            Log.d("m", "3");
            e.printStackTrace();
        }
XMLка такая
XML
1
2
3
4
5
6
<userInfo>
  <string name = "idName">Иван Иванов</string>
  <string name = "avaSrc">ava1.png</string>
  <string name = "someWords">I am very good\nVery</string>
  <string name = "whoIAm">Another</string>   
</userInfo>
вылетает IOException

Добавлено через 4 минуты
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
06-12 09:32:44.177: D/AndroidRuntime(1225): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
06-12 09:32:44.177: D/AndroidRuntime(1225): CheckJNI is ON
06-12 09:32:44.958: D/AndroidRuntime(1225): Calling main entry com.android.commands.pm.Pm
06-12 09:32:45.138: D/dalvikvm(202): GC_EXPLICIT freed 4K, 54% free 2538K/5511K, external 716K/1038K, paused 55ms
06-12 09:32:45.138: W/ActivityManager(74): No content provider found for: 
06-12 09:32:48.562: W/ActivityManager(74): No content provider found for: 
06-12 09:32:48.580: D/PackageParser(74): Scanning package: /data/app/vmdl673284870.tmp
06-12 09:32:49.188: D/dalvikvm(74): GC_CONCURRENT freed 712K, 59% free 4120K/9991K, external 2216K/2816K, paused 34ms+7ms
06-12 09:32:49.389: I/PackageManager(74): Removing non-system package:com.example.pr
06-12 09:32:49.389: I/ActivityManager(74): Force stopping package com.example.pruid=10030
06-12 09:32:49.488: I/Process(74): Sending signal. PID: 1172 SIG: 9
06-12 09:32:49.698: E/InputDispatcher(74): channel '4053f250 com.example.pr/com.example.pr.General_Activity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
06-12 09:32:49.698: E/InputDispatcher(74): channel '4053f250 com.example.pr/com.example.pr.General_Activity (server)' ~ Channel is unrecoverably broken and will be disposed!
06-12 09:32:49.718: I/WindowManager(74): WINDOW DIED Window{4053f250 com.example.pr/com.example.pr.General_Activity paused=false}
06-12 09:32:51.027: D/PackageManager(74): Scanning package com.example.pr
06-12 09:32:51.027: I/PackageManager(74): Package com.example.prcodePath changed from /data/app/com.example.pr-2.apk to /data/app/com.example.pr-1.apk; Retaining data and using new
06-12 09:32:51.048: I/PackageManager(74): Unpacking native libraries for /data/app/com.example.pr-1.apk
06-12 09:32:51.348: D/installd(34): DexInv: --- BEGIN '/data/app/com.example.pr-1.apk' ---
06-12 09:32:56.717: D/dalvikvm(202): GC_EXPLICIT freed 6K, 54% free 2538K/5511K, external 716K/1038K, paused 1873ms
06-12 09:32:58.077: D/dalvikvm(1234): DexOpt: load 123ms, verify+opt 649ms
06-12 09:33:01.254: D/installd(34): DexInv: --- END '/data/app/com.example.pr-1.apk' (success) ---
06-12 09:33:01.257: W/PackageManager(74): Code path for pkg : com.example.prchanging from /data/app/com.example.pr-2.apk to /data/app/com.example.pr-1.apk
06-12 09:33:01.257: W/PackageManager(74): Resource path for pkg : com.example.prchanging from /data/app/com.example.pr-2.apk to /data/app/com.example.pr-1.apk
06-12 09:33:01.257: D/PackageManager(74):   Activities: com.example.pr.Main_Activity com.example.pr.Registration_Activity com.example.pr.General_Activity com.example.pr.userImgDialog_Activity
06-12 09:33:01.298: I/ActivityManager(74): Force stopping package com.example.pruid=10030
06-12 09:33:02.821: I/installd(34): move /data/dalvik-cache/data@app@com.example.pr-1.apk@classes.dex -> /data/dalvik-cache/data@app@com.example.pr-1.apk@classes.dex
06-12 09:33:02.821: D/PackageManager(74): New package installed in /data/app/com.example.pr-1.apk
06-12 09:33:03.878: I/ActivityManager(74): Force stopping package com.example.pruid=10030
06-12 09:33:04.029: D/dalvikvm(74): GC_EXPLICIT freed 344K, 60% free 4085K/9991K, external 2216K/2816K, paused 117ms
06-12 09:33:04.128: D/dalvikvm(232): GC_EXPLICIT freed 2K, 51% free 2871K/5767K, external 2039K/2474K, paused 116ms
06-12 09:33:04.257: W/RecognitionManagerService(74): no available voice recognition services found
06-12 09:33:04.667: D/dalvikvm(74): GC_EXPLICIT freed 241K, 60% free 4006K/9991K, external 2216K/2816K, paused 90ms
06-12 09:33:04.667: D/dalvikvm(251): GC_EXPLICIT freed 76K, 52% free 2761K/5703K, external 716K/1038K, paused 537ms
06-12 09:33:04.937: I/installd(34): unlink /data/dalvik-cache/data@app@com.example.pr-2.apk@classes.dex
06-12 09:33:04.957: D/AndroidRuntime(1225): Shutting down VM
06-12 09:33:04.997: D/dalvikvm(1225): GC_CONCURRENT freed 101K, 72% free 295K/1024K, external 0K/0K, paused 3ms+2ms
06-12 09:33:04.997: I/AndroidRuntime(1225): NOTE: attach of thread 'Binder Thread #3' failed
06-12 09:33:04.997: D/jdwp(1225): Got wake-up signal, bailing out of select
06-12 09:33:04.997: D/dalvikvm(1225): Debugger has detached; object registry had 1 entries
06-12 09:33:05.947: D/AndroidRuntime(1239): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
06-12 09:33:05.947: D/AndroidRuntime(1239): CheckJNI is ON
06-12 09:33:06.597: D/AndroidRuntime(1239): Calling main entry com.android.commands.am.Am
06-12 09:33:06.637: I/ActivityManager(74): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.pr/.Main_Activity } from pid 1239
06-12 09:33:06.827: D/AndroidRuntime(1239): Shutting down VM
06-12 09:33:06.837: D/dalvikvm(1239): GC_CONCURRENT freed 102K, 69% free 320K/1024K, external 0K/0K, paused 1ms+1ms
06-12 09:33:06.837: D/jdwp(1239): Got wake-up signal, bailing out of select
06-12 09:33:06.837: D/dalvikvm(1239): Debugger has detached; object registry had 1 entries
06-12 09:33:06.887: I/ActivityManager(74): Start proc com.example.prfor activity com.example.pr/.Main_Activity: pid=1248 uid=10030 gids={3003}
06-12 09:33:06.949: I/dalvikvm(1239): JNI: AttachCurrentThread (from ???.???)
06-12 09:33:06.949: I/AndroidRuntime(1239): NOTE: attach of thread 'Binder Thread #3' failed
06-12 09:33:07.967: I/ActivityManager(74): Displayed com.example.pr/.Main_Activity: +1s81ms
06-12 09:33:08.877: I/ActivityManager(74): Starting: Intent { cmp=com.example.pr/.General_Activity (has extras) } from pid 1248
06-12 09:33:08.947: I/dalvikvm(1248): Could not find method android.renderscript.Element.getName, referenced from method com.example.pr.General_Activity.onCreate
06-12 09:33:08.947: W/dalvikvm(1248): VFY: unable to resolve virtual method 291: Landroid/renderscript/Element;.getName ()Ljava/lang/String;
06-12 09:33:08.947: D/dalvikvm(1248): VFY: replacing opcode 0x6e at 0x006f
06-12 09:33:08.947: D/dalvikvm(1248): VFY: dead code 0x0072-007e in Lcom/example/pr/General_Activity;.onCreate (Landroid/os/Bundle;)V
06-12 09:33:09.007: D/m(1248): 3
06-12 09:33:09.007: W/System.err(1248): java.net.MalformedURLException: Protocol not found: <userInfo>
06-12 09:33:09.017: W/System.err(1248):   <string name = "idName">пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ</string>
06-12 09:33:09.017: W/System.err(1248):   <string name = "avaSrc">ava1.png</string>
06-12 09:33:09.017: W/System.err(1248):   <string name = "someWords">I am very good\nVery</string>
06-12 09:33:09.017: W/System.err(1248):   <string name = "whoIAm">Another</string>   
06-12 09:33:09.017: W/System.err(1248): </userInfo>
06-12 09:33:09.017: W/System.err(1248):     at java.net.URL.<init>(URL.java:273)
06-12 09:33:09.017: W/System.err(1248):     at java.net.URL.<init>(URL.java:157)
06-12 09:33:09.027: W/System.err(1248):     at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:118)
06-12 09:33:09.027: W/System.err(1248):     at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:155)
06-12 09:33:09.027: W/System.err(1248):     at com.example.pr.General_Activity.onCreate(General_Activity.java:51)
06-12 09:33:09.027: W/System.err(1248):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-12 09:33:09.027: W/System.err(1248):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-12 09:33:09.055: W/System.err(1248):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-12 09:33:09.055: W/System.err(1248):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-12 09:33:09.057: W/System.err(1248):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-12 09:33:09.057: W/System.err(1248):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-12 09:33:09.057: W/System.err(1248):     at android.os.Looper.loop(Looper.java:123)
06-12 09:33:09.057: W/System.err(1248):     at android.app.ActivityThread.main(ActivityThread.java:3683)
06-12 09:33:09.057: W/System.err(1248):     at java.lang.reflect.Method.invokeNative(Native Method)
06-12 09:33:09.057: W/System.err(1248):     at java.lang.reflect.Method.invoke(Method.java:507)
06-12 09:33:09.057: W/System.err(1248):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-12 09:33:09.057: W/System.err(1248):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-12 09:33:09.057: W/System.err(1248):     at dalvik.system.NativeStart.main(Native Method)
06-12 09:33:09.217: D/dalvikvm(1248): GC_EXTERNAL_ALLOC freed 158K, 52% free 2625K/5447K, external 884K/1038K, paused 54ms
06-12 09:33:10.077: I/ActivityManager(74): Displayed com.example.pr/.General_Activity: +907ms
06-12 09:33:15.198: D/dalvikvm(300): GC_EXPLICIT freed 8K, 55% free 2591K/5703K, external 716K/1038K, paused 81ms
06-12 09:33:20.328: D/dalvikvm(396): GC_EXPLICIT freed 3K, 55% free 2533K/5511K, external 716K/1038K, paused 146ms
06-12 09:33:25.367: D/dalvikvm(232): GC_EXPLICIT freed 6K, 51% free 2874K/5767K, external 2061K/2474K, paused 126ms
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 13:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Парсинг XML (Программирование Android):

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

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

Парсинг XML
try { DocumentBuilderFactory factory =...

Парсинг xml-файла
Пытаюсь получить информацию из xml файла, но всегда получаю ошибку. Как это...

XML Парсинг (yml)
Вопрос таков. Чем распарсить yml страницу...

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

34
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 00:53 #21
а, ну да, там и так это написано.
покажитека ваши импорты...

Добавлено через 1 минуту
может все таки в этой строке екзепшен происходит?
Цитата Сообщение от spydark91 Посмотреть сообщение
NodeList title = ((Document) element).getElementsByTagName("string");
Добавлено через 2 минуты
ElementImpl к Element нормально каститься, а вот Document здесь вроде не при делам.
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 00:54  [ТС] #22
Екзепшина не происходит,приложение падает на 58 строке,т.е. на
Java
1
 Element element = (Element) nodes.item(0);
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 00:56 #23
ну так импорты покажите?

Добавлено через 12 секунд
и выложите проект.
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 00:58  [ТС] #24
а импорты такие
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
import java.io.ByteArrayInputStream;
import java.io.IOException;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
 
 
import android.os.Bundle;
import android.renderscript.Element;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Window;
import android.widget.Toast;
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:01 #25
Цитата Сообщение от spydark91 Посмотреть сообщение
org.w3c.dom.Node;
Цитата Сообщение от spydark91 Посмотреть сообщение
android.renderscript.Element
Цитата Сообщение от spydark91 Посмотреть сообщение
org.apache.harmony.xml.dom.ElementImpl
омг
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:03  [ТС] #26
не уловил суть
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:09 #27
renderscript здесь к чему? как у вас код вообще скомпилировался не понимаю.

Добавлено через 1 минуту
Java
1
import org.w3c.dom.Element;
должен быть.
1
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:13  [ТС] #28
сделал такой импорт
Java
1
import org.w3c.dom.Element;
теперь тычет на
Java
1
    NodeList title = ((Document) element).getElementsByTagName("string");

а как можно получить имя тега string ,т.е. для
XML
1
<string name = "idName">Иван Иванов</string>
получить idName

Добавлено через 2 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
06-13 21:12:51.422: D/AndroidRuntime(21371): Shutting down VM
06-13 21:12:51.422: W/dalvikvm(21371): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-13 21:12:51.443: E/AndroidRuntime(21371): FATAL EXCEPTION: main
06-13 21:12:51.443: E/AndroidRuntime(21371): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pr/com.example.pr.General_Activity}: java.lang.ClassCastException: org.apache.harmony.xml.dom.ElementImpl
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.os.Looper.loop(Looper.java:123)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.ActivityThread.main(ActivityThread.java:3683)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at java.lang.reflect.Method.invokeNative(Native Method)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at java.lang.reflect.Method.invoke(Method.java:507)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at dalvik.system.NativeStart.main(Native Method)
06-13 21:12:51.443: E/AndroidRuntime(21371): Caused by: java.lang.ClassCastException: org.apache.harmony.xml.dom.ElementImpl
06-13 21:12:51.443: E/AndroidRuntime(21371):    at com.example.pr.General_Activity.onCreate(General_Activity.java:57)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-13 21:12:51.443: E/AndroidRuntime(21371):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-13 21:12:51.443: E/AndroidRuntime(21371):    ... 11 more
06-13 21:12:53.152: I/Process(21371): Sending signal. PID: 21371 SIG: 9
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:18 #29
наверное как-то так
Java
1
String name = element.getAttribute("name");
Добавлено через 3 минуты
или так
Java
1
String name = element.getElementsByTagName("string").get(0).getAttribute("name");
1
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:21  [ТС] #30
упорно выдает ошибку на
Java
1
NodeList title = ((Document) element).getElementsByTagName("string");
а
Java
1
    Log.v("log", ""+element.getElementsByTagName("string"));
вывело 06-13 21:19:29.822: V/log(21940): org.apache.harmony.xml.dom.NodeListImpl@4054d960
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:23 #31
а где вы видите в моем коде Document?
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:25  [ТС] #32
не, это другое
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
 
            Document doc = builder.parse(new InputSource(new ByteArrayInputStream(data.getBytes("utf-8"))));
            // Document doc = builder.parse(data);
            NodeList nodes = doc.getElementsByTagName("userInfo");
            Element element = (Element) nodes.item(0);  
            NodeList title = ((Document) element).getElementsByTagName("string");
            for (int i = 0; i < 4; i++) {
                Element line = (Element) title.item(i);
                userInfo.setContent(line.getAttribute("name"),((Node) line).getTextContent());
            }
ваш код в цикле
а падает до цикла
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:26 #33
что другое? почему вы к Document привязались?
1
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:43  [ТС] #34
если выводить кириллицу, то вместо букв вопросики
как с этим справиться?
0
spydark91
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
16.06.2013, 18:25  [ТС] #35
как с кодировкой справиться?)
0
16.06.2013, 18:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2013, 18:25
Привет! Вот еще темы с решениями:

Парсинг XML на АНДРОИД
Суть приложения - парсит XML файл с сервера ( извлекает значение тега &lt;bid&gt;)....

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

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

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


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

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

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