الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع XML

بدأه YaSeenTA في 5 سبتمبر 2010 · 7 رد · 732 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

حيث أني جديد على عالم الجافا فهناك الكثير مما لا أعلمه و أتمنى الإستفادة من خبرات الأخوة هنا.

السؤال خاص بالتعامل مع XML.

أود معرفة إن كان هناك مكتبة تساعد في إستخدام XPATH expression مع SAX ..

أثناء بحثي لما يزيد عن ساعة, وجدت بعض التساؤلات عن هذه المشكلة...

وأفضل النتائج التي وجدتها ما ذكر هنا

http://www.stylusstudio.com/xmldev/200111/post70900.html

المشكلة أن الكود الذي تحدث عنه Niels Peter Strandberg لم أستطع إيجاده في أي مكان على النت. ربما أحاول مراسلته لاحقاً ...

القيام بمحاولة لعمل مكتبة لهذا الغرض قد تأخذ مني وقت كبير أنا في حاجته لأشياء تعتبر أهم لي في الوقت الحالي.

#2

نفس المشكلة مع STAX و XPATH expression

سأحاول إستخدام VTD-XML فيبدو من مواصفاتها أنها جيدة ...

#3

أولا: هلا وضحت أكثر؟ ماذا تريد بالظبط؟ فعلى حسب علمي فإن JDK1.5 تمكنك من إستخدام XPath ...

ثانيا: لاحظ أن تاريخ الرابط قديم (2001)

#4

هناك عدة طرق لعمل Parsing للـ XML ومنها SAX,STAX وهي لا تقوم بتحميل الملف كاملاً إلى الذاكرة.

أريد إستخدام XPath expression مع هذه الطرق.. لا أقصد هنا استعمال XPath بل الـ expression فقط ..

في حالة كانت ملفات الـ XML كبيرة الحجم و كثيرة واردنا إستعمال XPath في برنامج mutlithreading فسيستهلك ذلك مقدار كبيرة من الذاكرة وسيؤثر على البرنامج والقدرة الإنتاجية له ..

إستعمال SAX,STAX سيكون أفضل حسب بعض المعلومات التي قرأتها لكن البرنامج يفترض إستعمال xpath expression أو شئ مشابه ...

لا أعلم إن كنت وضحت الأمور أم أنها إزدادت غموضاً.

تم تعديل هذه المشاركة بواسطة YaSeenTA في 7 سبتمبر 2010 في 17:10

#5
اقتباس
هناك عدة طرق لعمل Parsing للـ XML ومنها SAX,STAX وهي لا تقوم بتحميل الملف كاملاً إلى الذاكرة.

و يوجد DOM و يقوم بتحميل الملف كاملا إلى الذاكره.

اقتباس
لا أعلم إن كنت وضحت الأمور أم أنها إزدادت غموضاً.

بالنسبه لي, إزدات غموضا....

ماذا تريد أن تفعل بالضبط؟

هناك DOM, SAX, Stax تقوم بعمل parsing (تحليل) للملفات ال XML بواسطتها

هناك XSLT تقوم بمعالجة ملفات ال XML بواسطتها

هناك XPath تستخدم للوصول لمسار (path) معين بسهوله بالغه (بدلا من عمل تحليل للملف كامله, تستخدم Xpath للوصول لpath معين.)

ماذا تريد أنت بالتحديد؟؟wacko.gif

#6

أعلم بوجود DOM ولكنها تقوم بتحميل الملف كاملاً إلى الذاكرة كما أشرت -أنت- لذا لم أذكرها في ردي .

كما ذكرت في ردي السابق على فرض أن التطبيق يستخدم multithreading لمعالجة بيانات كثيرة وملفات عديدة . إستخدام parser يعتمد على تحميل الملف كاملاً إلى الذاكرة أعتقد غير مجدي.

وإذا اردت إستعمال SAX,STAX فالتعامل مع الـ nodes ليست يسيراً كما هو الحال حين إستعمال XPath ولكنه يتطلب وجود الملف كاملاً في الذاكرة ...

غرضي من السؤال أني أعتقد أن XPath expression شئ واضح وسهل فأريد إستخدامها مع SAX,STAX ...

تم تعديل هذه المشاركة بواسطة YaSeenTA في 7 سبتمبر 2010 في 21:31

#7

هذا هو السؤال الذي فهتمه (ارجوا التصحيح):

أريد أن أعمل مع XPath ولكني علمت بطريقة أو بأخرى أن ال XPath يقوم بتحميل الملف كاملا إلى الذاكره قبل البدء في المعالجه... (كأنه يستخدم DOM داخليا)

لذا أريد ان أعمل مع XPath ولكن من دون جعله يحمل الملف كله عند المعالجه (اي جعله يستخدم SAX او Stax داخليا بدلا من DOM )...

هل هذا هو سؤالك؟

إن كان ذلك, فما الذي أكد لك أن ال XPath يقوم بتحميل الملف قبل العمل عليه؟؟

#8

يبدو أن الأمور إلتبست علي ... وخانني التعبير حين قلت " لا تقوم بتحميل الملف كاملاً إلى الذاكرة."

SAX,STAX تستخدم streaming اثناء قراءة الملف ولا تقوم بإنشاء Tree كما هو الحال في DOM لذلك مع الملفات كبيرة الحجم تكون فعالة أكثر ...

يبدو أن علي قراءة المزيد عن الـ XML parser و بالذات VTD-XML والتى تدعم XPath ولا تعتمد على DOM وتبدو هي الخيار الأفضل...

هذا المقال جيد ويوضح بعض الامور التي لم أنتبه لها

http://developerlife.com/tutorials/?p=28

مواضيع مشابهة