PDA

View Full Version : خواندن محتویات xml با jdom



samiasoft
چهارشنبه 24 مرداد 1397, 04:28 صبح
سلام دوستان

من میخواستم فید یا rss سایت ها رو بخونم و در برنامه به نمایش بزارم...بیشتر اینا در قالب xml هستند.

با کتابخانه رتروفیت و به کمک RssConverterFactory (https://github.com/faruktoptas/RetrofitRssConverterFactory)تونستم به راحتی این کار را انجام بدم.

اما حالا میخواستم همین کار رو در کتابخانه volley هم انجام بدم که انگار ابزاری برای خواندن xml در این کتابخانه وجودندارد.

برای همین سورس صفحه xml رو به کمک کتابخانه volley بدست اوردم و داخل یک متغییر ریختم.

حالا برای خواندن بخش های مختلف این رشته که xml هست از jdom (http://www.jdom.org/)کمک گرفتم.


فرض کنید محتویات xml که میخواهیم دریافت کنیم از این سایت هست :

https://www.samisoft.ir/feed/

حال با استفاده از کتابخانه jdom به ایتم های title , link و pubDate چگونه دست پیداکنیم؟

من اومدم اینطور نوشتم : درواقع سورس صفحه رو در متغیر data ریختیم :

InputStream input = new ByteArrayInputStream(data.getBytes("UTF-8"));
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(input);
Element rootNode = document.getRootElement();
List<Element> nodes = rootNode.getChildren("item");




for (Element node : nodes){


String title=node.getChildText("title");
String pubDate=node.getChildText("pubDate");
String link=node.getChildText("link");


String txt=title + "\r\n" + pubDate + "\r\n" + link;
Log.d("tAG",txt);
}


input.close();

ولی متاسفانه خروجی خالی رو میده !!! دستور بالا رو داخل try catch که میزارم خطای زیر رو میده..انگار از محتویات xml خطا میگیره !!
org.jdom2.input.JDOMParseException: Error on line 9: At line 9, column 2: unbound prefix
یا شما روش بهتری سراغ دارید ؟ ممنون میشوم راهنمایی کنید.

samiasoft
پنج شنبه 25 مرداد 1397, 18:17 عصر
دوستان کسی در این باره کار نکرده ؟

من فکر میکنم باید این محتویات xml رو قبل خوندن validate باید کنیم اما چطوری اینکار رو انجام بدم رو نتونستم...اگر میشد با همین کتابخانه jdom این کار رو کرد عالی میشد