在android中使用sax解析器解析xml文档时出错。有人可以帮我解决这个错误吗? 错误如下所示:
org.apache.harmony.xml.ExpatParser$ParseException: At line 5, column 9: not well-formed (invalid token)
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[​​قالت لـ زوجھا : [ علمني قيادھ السيارھ  ] !
فقال لہـا : انتـي گالملگھ . . 
والملكھ لا تقود يا حبيبتـي
فقالت لھ : حسنــاً ..
لن ٱقود .. لن أغسـل .. لن أطبـخ !
لن أربـي الأطفـال !
لأننـي ” ملگھ “ والملگھ لا تقوم بہذھ المہام 
اضافھ الى اني احتـاج عشرات الخادمـات
حتى اتفرغ للاهتمام بـ جمالي ;;)...]]></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 -->​​قالت لـ زوجھا : [ علمني قيادھ السيارھ  ] !
فقال لہـا : انتـي گالملگھ . . 
والملكھ لا تقود يا حبيبتـي
فقالت لھ : حسنــاً ..
لن ٱقود .. لن أغسـل .. لن أطبـخ !
لن أربـي الأطفـال !
لأننـي ” ملگھ “ والملگھ لا تقوم بہذھ المہام 
اضافھ الى اني احتـاج عشرات الخادمـات
حتى اتفرغ للاهتمام بـ جمالي ;;) 
فقـال لہـا : أمزح معك فديتك =D:s​​
اضغطي الكلتش وعشقي بواحد وارفعي رجلك شوي شوي . . 


ههههههههههههههههههههههههههههههههههههههههه<!-- 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>
过去两天我一直在网上寻找答案。任何帮助将不胜感激。
logcat:
11-29 12:48:32.649:E / AndroidRuntime(26821):致命异常:主要 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.finish(AsyncTask.java:417)11-29 12:48:32.649: E / AndroidRuntime(26821):at android.os.AsyncTask.access $ 300(AsyncTask.java:127)11-29 12:48:32.649:E / AndroidRuntime(26821):at android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:429) 11-29 12:48:32.649:E / AndroidRuntime(26821):at android.os.Handler.dispatchMessage(Handler.java:99)11-29 12:48:32.649:E / AndroidRuntime(26821):at android.os.Looper.loop(Looper.java:123)11-29 12:48:32.649: E / AndroidRuntime(26821):at android.app.ActivityThread.main(ActivityThread.java:3687)11-29 12:48:32.649:E / AndroidRuntime(26821):at java.lang.reflect.Method.invokeNative(Native Method)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(原生方法)
以下是解析发生的代码。
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;
}
}
答案 0 :(得分:5)
试试这个:
Reader r = new InputStreamReader(url.openStream(), "windows-1256");
InputSource is = new InputSource(r);
xmlreader.parse(is);
答案 1 :(得分:0)
尝试添加此内容:is.setEncoding("Cp1256");
在此行之后InputSource is = new InputSource(url.openStream());