Xml解析器意外标记错误位置:java.io.stringreader中的TEXT @ 1:2 [英] Xml parser unexpected token error position:TEXT @1:2 in java.io.stringreader

查看:129
本文介绍了Xml解析器意外标记错误位置:java.io.stringreader中的TEXT @ 1:2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题是当我从原始链接解析XML时(我不会因为安全目的而发布原始链接),例如http://example.com/ss.svc/APIabc?A=10&Key = XXXXX& From = 19& To = 221& Date = 19-Apr-2016然后listview没有填充,logcat说错误这个

LogCat错误 -

The problem is when I parse the XML from the original link for example (i am not posting the original link due to securit purpose) like http://example.com/ss.svc/APIabc?A=10&Key=XXXXX&From=19&To=221&Date=19-Apr-2016 then listview is not populated and the the logcat says error this
LogCat error-

Unexpected token (position:TEXT @1:2 in java.io.StringReader@4255df00) 
 Shutting down VM
 threadid=1: thread exiting with uncaught exception (group=0x41b19438)
 FATAL EXCEPTION: main
<pre lang="java"> java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidhive/com.example.androidhive.CustomizedListView}: java.lang.NullPointerException
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
 at android.app.ActivityThread.access$700(ActivityThread.java:143)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:137)
 at android.app.ActivityThread.main(ActivityThread.java:4960)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:511)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
 at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
 at com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48)
 at android.app.Activity.performCreate(Activity.java:5203)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
 ... 11 more





但是当相同的XML被放到另一个服务器链接然后链接以.php结尾时,例如这个http://www.example .in / exapmle / sub.php然后它将解析后的数据显示到listview



说我的XML格式是这样的





but when the same XML is put to another server link then with the link ending with .php for example this http://www.example.in/exapmle/sub.php then its showing the parsed data to listview

Say my XML Format is like this

<APIabc

    xmlns="http://exapmle.org/">
    <APIabcd

        xmlns:a="http://ac.ssc.org/2014/21/abfaggkk"

        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <Route>
            <Time>2016-04-13 06:11:00 AM</Time>
            <Avail>xyz</Avail>
            <thumb_url>http://api.androidhive.info/music/images/adele.png</thumb_url>
            <BusLabel/>
        </Route>
    </APIabcd>
</APIabc>









as logcat s ays error com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48)所以代码中的第48行







As logcat says error com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48) so the line 48 in code

NodeList nl = doc.getElementsByTagName(KEY_SONG);





我尝试过:



CustomizedListView.java



What I have tried:

CustomizedListView.java

public class CustomizedListView extends Activity {
        // All static variables
        static final String URL = "http://example.com/ss.svc/APIabc?A=10&Key=XXXXX&From=19&To=221&Date=19-Apr-2016";
        // XML node keys 
        static final String KEY_SONG = "Route"; // parent node
    static final String KEY_ID = "Avail";
    static final String KEY_TITLE = "Avail";
    static final String KEY_ARTIST = "Avail";
    static final String KEY_ARTIST2 = "Avail";
    static final String KEY_DURATION = "Avail";
    static final String KEY_THUMB_URL = "thumb_url";

        ListView list;
        LazyAdapter adapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

            XMLParser parser = new XMLParser();
            String xml = parser.getXmlFromUrl(URL); // getting XML from URL
            Document doc = parser.getDomElement(xml); // getting DOM element

            NodeList nl = doc.getElementsByTagName(KEY_SONG);
            // looping through all song nodes <song>
            for (int i = 0; i < nl.getLength(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                Element e = (Element) nl.item(i);
                // adding each child node to HashMap key => value
                map.put(KEY_ID, parser.getValue(e, KEY_ID));
                map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
                map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
                map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
                map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

                // adding HashList to ArrayList
                songsList.add(map);
            }

            list=(ListView)findViewById(R.id.list);

            // Getting adapter by passing xml data ArrayList
            adapter=new LazyAdapter(this, songsList);
            list.setAdapter(adapter);

            // Click event for single list row
            list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                }
            });
        }
    }

推荐答案

700(ActivityThread.java:143)
在android.app .ActivityThread
700(ActivityThread.java:143) at android.app.ActivityThread


H.handleMessage(ActivityThread.java:1241)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os .Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:4960)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit
H.handleMessage(ActivityThread.java:1241) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4960) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit


MethodAndArgsCaller.run(ZygoteInit。 java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(Native Method)
引起: java.lang.NullPointerException
at com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48)
at android.app.Activity.performCreate(Activity.java:5203)
at android.app.Instrumentation.c allActivityOnCreate(Instrumentation.java:1094)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
... 11更多
MethodAndArgsCaller.run(ZygoteInit.java:1038) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48) at android.app.Activity.performCreate(Activity.java:5203) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078) ... 11 more





但是当相同的XML被放到另一个服务器链接然后链接以.php结尾时,例如这个http://www.example.in/exapmle/sub.php然后它将解析后的数据显示到listview



说我的XML格式是这样的





but when the same XML is put to another server link then with the link ending with .php for example this http://www.example.in/exapmle/sub.php then its showing the parsed data to listview

Say my XML Format is like this

<APIabc

    xmlns="http://exapmle.org/">
    <APIabcd

        xmlns:a="http://ac.ssc.org/2014/21/abfaggkk"

        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <Route>
            <Time>2016-04-13 06:11:00 AM</Time>
            <Avail>xyz</Avail>
            <thumb_url>http://api.androidhive.info/music/images/adele.png</thumb_url>
            <BusLabel/>
        </Route>
    </APIabcd>
</APIabc>









因为logcat说错误com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48)所以代码中的第48行







As logcat says error com.example.androidhive.CustomizedListView.onCreate(CustomizedListView.java:48) so the line 48 in code

NodeList nl = doc.getElementsByTagName(KEY_SONG);





我的尝试:



CustomizedListView.java



What I have tried:

CustomizedListView.java

public class CustomizedListView extends Activity {
        // All static variables
        static final String URL = "http://example.com/ss.svc/APIabc?A=10&Key=XXXXX&From=19&To=221&Date=19-Apr-2016";
        // XML node keys 
        static final String KEY_SONG = "Route"; // parent node
    static final String KEY_ID = "Avail";
    static final String KEY_TITLE = "Avail";
    static final String KEY_ARTIST = "Avail";
    static final String KEY_ARTIST2 = "Avail";
    static final String KEY_DURATION = "Avail";
    static final String KEY_THUMB_URL = "thumb_url";

        ListView list;
        LazyAdapter adapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

            XMLParser parser = new XMLParser();
            String xml = parser.getXmlFromUrl(URL); // getting XML from URL
            Document doc = parser.getDomElement(xml); // getting DOM element

            NodeList nl = doc.getElementsByTagName(KEY_SONG);
            // looping through all song nodes <song>
            for (int i = 0; i < nl.getLength(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                Element e = (Element) nl.item(i);
                // adding each child node to HashMap key => value
                map.put(KEY_ID, parser.getValue(e, KEY_ID));
                map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
                map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
                map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION));
                map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

                // adding HashList to ArrayList
                songsList.add(map);
            }

            list=(ListView)findViewById(R.id.list);

            // Getting adapter by passing xml data ArrayList
            adapter=new LazyAdapter(this, songsList);
            list.setAdapter(adapter);

            // Click event for single list row
            list.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                }
            });
        }
    }


这篇关于Xml解析器意外标记错误位置:java.io.stringreader中的TEXT @ 1:2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆