سؤال

يحتوي إطار عمل .Net الآن (على الأقل) على أربع طرق مختلفة لقراءة سلسلة Xml.لقد استخدمت كل من XmlDocument، وXmlReader، وXPath، وXElement، ولكن ما هو الأكثر كفاءة للاستخدام عند البرمجة أو أثناء التنفيذ؟هل تم تصميم كل منها لمهمة مختلفة، ما هي إيجابيات وسلبيات؟


تحديث:يبدو أن استخدام XmlReader هو أسرع طريقة لقراءة ملف XML، وهو ما يبدو معقولاً بالنسبة لي، ولكن له حدود.أود معرفة ما إذا كان هناك أي اختلاف في الأداء بين XmlDocument وXLinq للوصول إلى ملف XML بشكل غير متسلسل.


تحديث:لقد وجدت بعض المنشورات التي تقارن الطرق المختلفة لتحميل مستند XML.XmlReader هو الأسرع، هناك فرق بسيط بين XmlDocument وLINQ إلى XML حتى تقوم بتحميل مستند يحتوي على أكثر من 10000 عقدة حيث يظهر LINQ إلى XML في المقدمة.

هل كانت مفيدة؟

المحلول

الطرق الثلاثة الأكثر شيوعًا للقراءة هي:

XmlDocumentيقرأ الملف بأكمله في بنية شجرة يمكن الوصول إليها بعد ذلك باستخدام XPath أو من خلال تصفح جميع العقد.يتطلب الأمر مساحة كبيرة من الذاكرة لملف كبير جدًا حيث يجب تحميل بنية XML بالكامل في الذاكرة.جيد جدًا وسهل الاستخدام للملفات الصغيرة (أقل من بضعة ميغا).

XmlReaderسريع، ولكن أيضًا يمثل ألمًا حقيقيًا عند استخدامه نظرًا لأنه متسلسل.إذا كنت بحاجة إلى العودة إلى الوراء، فلن تتمكن من ذلك، وعادةً ما تكون بنية XML عرضة جدًا لوجود أوامر غير منظمة.وأيضًا، إذا كنت تقرأ من تدفق غير منتهي من XML، فمن المحتمل أن تكون هذه هي الطريقة الوحيدة للذهاب.

مسلسلات XMLيقوم هذا بشكل أساسي بكل شيء من أجلك، حيث تقوم بتوفير الكائن الجذر للنموذج الخاص بك ويقوم بإنشاء وقراءة ملف XML لك.ومع ذلك، ليس لديك أي سيطرة تقريبًا على البنية، كما أن قراءة الإصدارات القديمة من الكائن الخاص بك أمر مؤلم.لذا فإن هذا لن يعمل بشكل جيد من أجل المثابرة.

XDocument وLINQ إلى XMLكما أشار دانيال ستريت.لكنني لا أعرف ما يكفي للتعليق.أدعو أي شخص لتعديل المنشور وإضافة المعلومات المفقودة.


أما الكتابة الآن فهي قصة أخرى.من الصعب الحفاظ على XmlDocument، كما أن استخدام XmlWriter سهل للغاية.

أود أن أقول، من تجربتي، أن أفضل التحرير والسرد هو الكتابة باستخدام XmlWriter والقراءة باستخدام XmlDocument.

نصائح أخرى

هناك أيضًا XDocument وLINQ to XML، والتي أعتبرها الأكثر كفاءة عندما يتعلق الأمر بوقت المبرمج.

أسرع واحد سيكون XmlTextReader.من MSDN:

"يمثل قارئا يوفر سرعة غير مخزنة مؤقتا وإعادة توجيه فقط الوصول إلى بيانات XML."

المزيد هنا: فئة XmlTextReader

على الرغم من أن الأمر يعتمد حقًا على المشكلة لتحديد "الطريقة" الأكثر ملاءمة للاستخدام.إذا كنت بحاجة إلى قراءة ملف XML مرة واحدة فقط (على سبيل المثال:قراءة بعض إعدادات التطبيقات العامة وتخزينها مؤقتًا، وما إلى ذلك)، فإن XmlTextReader هو الفائز.لكن تذكر أنه قارئ للأمام فقط.إذا كنت بحاجة إلى البحث/التعديل في ملف XML بالكامل، فمن الأفضل أن تستخدمه فئة مستند Xml.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top