تحليل موجز RSS لتطبيق Android؟ هل jsoup الجواب؟

أقرأ كتاب تطوير Android Head الأول. في الفصل الثالث ، حاولوا إنشاء تطبيق من خلاصة RSS من NASA من هنا .
في الكتاب ، يستخدم المؤلف SAX parser لـ Java. نظرت إلى الإنترنت وبعض الإجابات هنا حول SO تشير إلى أن SAX قديمًا وأن هناك حلولًا جديدة.

ومع ذلك ، لست متأكدًا من سهولة استخدام جافا. لقد استخدمت Nokogiri لـ ruby وشيء مشابه سيكون رائعًا. نظرت إلى jsoup وبدا الأمر على ما يرام ، لكنني أتساءل عن الاقتراحات التي قد تكون لديكم.

0
إلقاء نظرة على هذا الرابط ibm.com/developerworks/xml/ مكتبة/س androidxml/index.html و
وأضاف المؤلف Aamirkhan, مصدر
شاهد هذا الرابط androidhive.info ربما مفيد لك.
وأضاف المؤلف Vivek Kumar Srivastava, مصدر

5 إجابة

أنا مؤلف كتاب Head First Android Development ، لذلك أردت فقط أن تتناغم مع بعض الأفكار. SAX هو بالتأكيد مرهق بعض الشيء ، ولكنه بسيط ومدمج في Android لفترة من الوقت (وبالتالي قرار استخدام ذلك في الكتاب). أنا أيضا مطور سكك وأنا من كبار المعجبين بالنيوكوجيري وأستخدمه كثيرًا. بالنظر إلى jsoup ، يمكنني بالتأكيد أن أرى أنه مفيد. ومع ذلك ، لم أجربه ، لذا لا يمكنني تقديم أي تجربة مباشرة معه.

هناك خيار آخر للنظر إليه وهو xml PullParser المدمج في Android. إنها لا تزال شبيهة بـ SAX ، لكنها ظهرت بشكل كامل أكثر.

أتمنى أن يساعدك هذا.

1
وأضاف
Johathan أنا أحب كتابك ولكن أنا تكافح كذلك مع محلل xml. لا يعمل رمز github للفصل 3 حاليًا وكنت أتساءل عما إذا كان سيتم إصلاحه في أي وقت قريب؟ أفكر في محاولة إنشاء المحلل اللغوي الخاص بي بعد الفشل في محاولة تعديل المحلل اللغوي الخاص بك (حصلت عليه لتجميع ولكن قوة التطبيق تغلق = /). شكر!
وأضاف المؤلف Tyler Pfaff, مصدر

تتوقف الشفرة الموجودة في الفصل الثالث لأن Android لا يدعم الشبكات في موضوعه الرئيسي.

لذلك يمكنك استخدام أي محلل مثل XmlPullParser ولكن تأكد من قيامك بالشبكة (تنزيل الخلاصة وما شابه) من الموضوع الرئيسي. يمكنك استخدام AsyncTask لأخذ الشبكات خارج سلسلة المحادثات الرئيسية .. أو إنشاء مؤشر ترابط جديد() والقيام بالشبكة في هذا الموضوع (مستحسن)

في الواقع ، في الفصل الرابع قاموا في الواقع بإنشاء مؤشر ترابط جديد للقيام بالشبكة. لذلك إذا كنت تستخدم كود Chapter4 بدلاً من ذلك ، فستعمل.

مشكلة أخرى قد تواجهها هي OutOfMemoryError لأن صور ناسا اليومية كبيرة حقا هذه الأيام. لذلك سيكون عليك فك تشفير الصورة باستخدام inSampleSize. يمكنك التحقق من الأسئلة الأخرى حول فك تشفير صورة ما للحصول على ما تريد. حظا طيبا وفقك الله. ))

1
وأضاف

أعتقد أن SAX هي طريقة افتراضية لتحقيق ذلك ، لا حدود على تجربة شيء جديد على الرغم من :)

0
وأضاف

منذ الإصدار 1.6.2 ، تدعم Jsoup رسميًا أيضًا تحليل XML. هذا يتيح لك تحليل xml وتحديد العناصر باستخدام محددات CSS jQuery-like. لإنشاء مستند xml مع Jsoup ، تحتاج إلى ما يلي بدلاً من Jsoup # parse() :

Document document = Parser.xmlParser().parseInput(xmlString, "");
// ...

This way the input won't implicitly be treated as HTML5 (so, no auto-included <html><head> tags and so on).

0
وأضاف

أنا معجب كبير من Jsoup. أنا فقط بدأت مؤخرا في استخدامه ورائع. اعتدت أن أكتب بعض أنماط regex فائقة الشعر للقيام بتطابق نمط مع لأنني أردت تجنب SAX مثل الطاعون ... وهذا كان مملا للغاية كما يمكنك أن تتخيل. Jsoup دعني تحليل عناصر محددة من<table> in just a few lines of code.

Let's say I want to take the first 7 rows of a table where the <tr class=...> is GridItem or GridAltItem. Then, lets say we want to print the 1st, 2nd, and 3rd columns as text and then the first link that appears in the row. Sounds goofy, but I had to do this and I can do this easily:

String page = "... some html markup fetched from somewhere ...";
Document doc = Jsoup.parse(page);
for(int x=0; x< 7; x++) {
  Element gridItem = doc.select("tr[class$=Item]").select("tr").get(x);
  System.out.println("row: " + gridItem.select("td").get(0).text() + " " + gridItem.select("td").get(1).text() + " " + gridItem.select("td").get(4).text() + " " + gridItem.select("a").get(0).attr("href"));
}

Its that simple with Jsoup. Make sure you add the Jsoup jar file to your project as a library and import those classes which you need: you don't want to import the wrong Document or Element class...

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

Enjoy!

0
وأضاف
Android Sudan Community
Android Sudan Community
900 مشارك

كل اقتراحاتكم تتم مشاركتها هنا رابط القناة لتنزيل البرامج والالعاب من هنا @android_sudan تنبيه : القروب غير مختص إطلاقا بي الانترنت المجاني مثل ملفات الحاقن وماشابه يمنع منعا باتا نشر اي ملفات او برامج او اي شيء يتعلق بالانترنت المجان