86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
1

Парсинг XML

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

Author24 — интернет-сервис помощи студентам
Пробую так
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2013, 13:36
Ответы с готовыми решениями:

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

Парсинг XML
Нужно роспарсить XML, который приходть с http://shop.podolyany.com.ua/api/rest/products/. Наверное...

Парсинг XML
try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); ...

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

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

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

Добавлено через 12 секунд
и выложите проект.
0
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
1162 / 986 / 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
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:03  [ТС] 26
не уловил суть
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:09 27
renderscript здесь к чему? как у вас код вообще скомпилировался не понимаю.

Добавлено через 1 минуту
Java
1
import org.w3c.dom.Element;
должен быть.
1
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
1162 / 986 / 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
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
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:23 31
а где вы видите в моем коде Document?
0
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
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 01:26 33
что другое? почему вы к Document привязались?
1
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 01:43  [ТС] 34
если выводить кириллицу, то вместо букв вопросики
как с этим справиться?
0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
16.06.2013, 18:25  [ТС] 35
как с кодировкой справиться?)
0
16.06.2013, 18:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2013, 18:25
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru