如何在android中修复windows-1256 xml解析错误?

Ahm*_*aat 1 android xml-encoding

在android中使用sax解析器解析xml文档时出错.有人可以帮我解决这个错误吗?错误如下所示:

org.apache.harmony.xml.ExpatParser$ParseException: At line 5, column 9: not well-formed (invalid token)
Run Code Online (Sandbox Code Playgroud)

xml文档编码是windows-1256.以下是xml代码中的示例:

<?xml version="1.0" encoding="windows-1256"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>??????? ???? ??????</title>
        <link>http://forum.mn66.com/</link>
        <description>?????,?????? ????,?????,?????,???????,???????,??????,??????,?????,???????,fashion</description>
        <language>ar</language>
        <lastBuildDate>Wed, 23 Nov 2011 08:38:36 GMT</lastBuildDate>
        <generator>vBulletin</generator>
        <ttl>60</ttl>
        <image>
            <url>http://forum.mn66.com/images/Ops_fayez/misc/rss.jpg</url>
            <title>??????? ???? ??????</title>
            <link>http://forum.mn66.com/</link>
        </image>
        <item>
            <title>???? ????? ????</title>
            <link>http://forum.mn66.com/t312645.html</link>
            <pubDate>Wed, 23 Nov 2011 08:31:20 GMT</pubDate>
            <description><![CDATA[?&#8203;?&#8203;???? ?? ????? : [ ????? ????? ??????? &#58974; ] !&#8233;???? ???? : ????? ??????? . .  &#8233;??????? ?? ???? ?? ???????&#8233;????? ?? : ??????? ..&#8233;?? &#1649;??? .. ?? ????? .. ?? ????? !&#8233;?? ????? ???????? !&#8233;?????? ” ???? “ ??????? ?? ???? ???? ?????? &#8233;????? ??? ??? ?????? ????? ?????????&#8233;??? ????? ???????? ?? ????? ;;)...]]></description>
            <content:encoded><![CDATA[<div><div style="margin:auto;text-align:center;"></div><br /><div style="margin:auto;text-align:center;">???? ????? ????<br /><br /></div><!-- google_ad_section_start -->?&#8203;?&#8203;???? ?? ????? : [ ????? ????? ??????? &#58974; ] !&#8233;???? ???? : ????? ??????? . .  &#8233;??????? ?? ???? ?? ???????&#8233;????? ?? : ??????? ..&#8233;?? &#1649;??? .. ?? ????? .. ?? ????? !&#8233;?? ????? ???????? !&#8233;?????? ” ???? “ ??????? ?? ???? ???? ?????? &#8233;????? ??? ??? ?????? ????? ?????????&#8233;??? ????? ???????? ?? ????? ;;) &#8233;????? ???? : ???? ??? ????? =D:s&#8203;&#8203;&#8233;????? ?????? ????? ????? ?????? ???? ??? ??? . . &#8233;&#8233;&#8233;?????????????????????????????????????????<!-- google_ad_section_end --></div>



]]></content:encoded>
            <category domain="http://forum.mn66.com/f16/">??? - jokes - ??? ? ???????</category>
            <dc:creator>*?? ????*</dc:creator>
            <guid isPermaLink="true">http://forum.mn66.com/t312645.html</guid>
        </item>
Run Code Online (Sandbox Code Playgroud)

过去两天我一直在网上寻找答案.任何帮助将不胜感激.

logcat的:

11-29 12:48:32.649:E/AndroidRuntime(26821):FATAL EXCEPTION:main 11-29 12:48:32.649:E/AndroidRuntime(26821):java.lang.NullPointerException 11-29 12:48:32.649: E/AndroidRuntime(26821):at com.lascivio.womenworld.RSSSection $ EfficientAdapter.getCount(RSSSection.java:161)11-29 12:48:32.649:E/AndroidRuntime(26821):at android.widget.ListView.setAdapter (ListView.java:502)11-29 12:48:32.649:E/AndroidRuntime(26821):at com.lascivio.womenworld.RSSSection $ GetData.onPostExecute(RSSSection.java:90)11-29 12:48:32.649 :E/AndroidRuntime(26821):at com.lascivio.womenworld.RSSSection $ GetData.onPostExecute(RSSSection.java:1)11-29 12:48:32.649:E/AndroidRuntime(26821):at android.os.AsyncTask.完成(AsyncTask.java:417)11-29 12:48:32.649:E/AndroidRuntime(26821):在android.os.AsyncTask.access $ 300(AsyncTask.java:127)11-29 12:48:32.649:E/AndroidRuntime(26821):在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:429)11-29 12:48:32.649:E/AndroidRuntime(26821):at android.os.Ha ndler.dispatchMessage(Handler.java:99)11-29 12:48:32.649:E/AndroidRuntime(26821):在android.os.Looper.loop(Looper.java:123)11-29 12:48:32.649: E/AndroidRuntime(26821):在android.app.ActivityThread.main(ActivityThread.java:3687)11-29 12:48:32.649:E/AndroidRuntime(26821):at java.lang.reflect.Method.invokeNative(Native方法)11-29 12:48:32.649:E/AndroidRuntime(26821):at java.lang.reflect.Method.invoke(Method.java:507)11-29 12:48:32.649:E/AndroidRuntime(26821) :at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867)11-29 12:48:32.649:E/AndroidRuntime(26821):at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:625)11-29 12:48:32.649:E/AndroidRuntime(26821):at dalvik.system.NativeStart.main(Native Method)

这是解析发生的代码.

private RSSFeed getFeed(String urlToRssFeed)
{
    try
    {
        // setup the url
        URL url = new URL(urlToRssFeed);

        // create the factory
        SAXParserFactory factory = SAXParserFactory.newInstance();
        // create a parser
        SAXParser parser = factory.newSAXParser();

        // create the reader (scanner)
        XMLReader xmlreader = parser.getXMLReader();
        // instantiate our handler
        RSSHandler theRssHandler = new RSSHandler();
        // assign our handler
        xmlreader.setContentHandler(theRssHandler);
        // get our data via the url class
        InputSource is = new InputSource(url.openStream());




        // perform the synchronous parse           
        xmlreader.parse(is);


        // get the results - should be a fully populated RSSFeed instance, or null on error
        return theRssHandler.getFeed();
    }
    catch (Exception ee)
    {
        // if we have a problem, simply return null
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*mir 5

试试这个:

Reader r = new InputStreamReader(url.openStream(), "windows-1256");
InputSource is = new InputSource(r);
xmlreader.parse(is);
Run Code Online (Sandbox Code Playgroud)