كيفية قراءة XML من ملف باستخدام Visual C #

للحصول على إصدار Microsoft Visual Basic.NET من هذه المقالة، راجع 301225 .


تشير هذه المقالة إلى مساحة الاسم Microsoft.NET Framework مكتبة الفئة التالية:
  • System.Xml

ملخص

توضح هذه المقالة كيفية استخدام فئة XmlTextReader لقراءة لغة التوصيف الموسعة (XML) من ملف. XmlTextReader يوفر تحليل وترميز XML ومواصفات XML 1.0 يطبق كذلك مساحات الأسماء في مواصفات XML من "اتحاد شبكة ويب العالمية" (W3C). توفر هذه المقالة الوصول إلى دفق سريع وترميزه إلى XML بدلاً من استخدام طراز كائن مثل طراز كائن المستند XML (DOM).

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة وحزم الخدمات التي تحتاجها:
  • Microsoft Visual Studio 2005 أو Microsoft Visual Studio. net
تفترض هذه المقالة أنك معتاد على المواضيع التالية:
  • مصطلحات XML
  • إنشاء وقراءه ملف XML

كيفية قراءة XML من ملف

يستخدم هذا المثال في ملف يسمى Books.xml. يمكنك إنشاء ملف Books.xml الخاصة بك أو استخدام نموذج الملف الذي تم تضمينه مع بدايات سريعة.NET مجموعة تطوير البرامج (SDK) في المجلد التالي:
.NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs visual Studio \Program Files\Microsoft


يجب نسخ Books.xml إلى المجلد \Bin\Debug الموجودة ضمن المجلد الذي يتم إنشاء هذا المشروع. Books.xml أيضا متوفرة للتنزيل. راجع قسم "المراجع" لموقع التحميل.

  1. بدء تشغيل Visual Studio 2005 أو Visual Studio.NET.
  2. إنشاء Visual C# "تطبيق" وحدة تحكم جديد. يمكنك الانتقال مباشرة إلى مقطع "سرد التعليمات البرمجية الكاملة" أو متابعة هذه الخطوات لبناء التطبيق.
  3. تأكد من أن المشروع يحتوي على مرجع إلى تجميع System.Xml.dll .
  4. تحديد استخدام التوجيه على مساحة الاسم System.Xml حيث غير مطلوبة لتأهيل xmltextreader لاحقاً في التعليمات البرمجية الخاصة بك . يجب عليك استخدام التوجيه استخدام قبل أية تعريفات الأخرى.
    using System.Xml;
  5. إنشاء مثيل للكائن XmlTextReader ، وملئه بملف XML. بشكل عام، يتم استخدام الفئة XmlTextReader إذا كنت تحتاج إلى الوصول إلى XML مثل البيانات الخام دون عناء DOM؛ وبالتالي، توفر الفئة XmlTextReader إليه أسرع لقراءة XML. الفئة XmlTextReader تحتوي المنشئات المختلفة لتحديد موقع بيانات XML. التعليمات البرمجية التالية تقوم بإنشاء مثيل من فئة XmlTextReader ويقوم بتحميل الملف Books.xml. أضف التعليمات البرمجية التالية إلى الإجراء الرئيسي من الفئة 1.
    XmlTextReader reader = new XmlTextReader ("books.xml");
  6. قراءة XML. (لاحظ أن هذه الخطوة يوضح الخارجية "أثناء" حلقة، والخطوتين التاليتين لشرح كيفية استخدام تلك الحلقة لقراءة XML.) بعد إنشاء الكائن XmlTextReader ، استخدم الأسلوب قراءة لقراءة بيانات XML. ما زال الأسلوب قراءة للانتقال إلى ملف XML التسلسل حتى تصل إلى نهاية الملف، في التي تشير إرجاع الأسلوب قراءة قيمة "false".
    while (reader.Read()) {
    // Do some work here on the data.
    Console.WriteLine(reader.Name);
    }
    Console.ReadLine();

  7. فحص العقد. لمعالجة بيانات XML، يحتوي كل سجل نوع عقده التي يمكن تحديدها من خاصية نوع عقده . خصائص اسم و قيمة إرجاع اسم العقدة (أسماء العنصر أو السمة) وقيمة عقده (نص عقده) العقدة الحالية (أو سجل). يحدد نوع عقده التعداد نوع العقدة. يعرض نموذج التعليمات البرمجية التالي اسم العناصر ونوع المستند. لاحظ أن هذا النموذج يتجاهل سمات عنصر.
    while (reader.Read()) {
    switch (reader.NodeType)
    {
    case XmlNodeType.Element: // The node is an element.
    Console.Write("<" + reader.Name);
    Console.WriteLine(">");
    break;
    case XmlNodeType.Text: //Display the text in each element.
    Console.WriteLine (reader.Value);
    break;
    case XmlNodeType. EndElement: //Display the end of the element.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
    break;
    }
    }

  8. فحص السمات. يمكن أن تتضمن أنواع عقده عنصر قائمة العقد السمة المرتبطين بهم. أسلوب موفيتونيكستاتريبوتي يمر كل سمة في العنصر التسلسل. استخدام الخاصية هاساتريبوتيس لاختبار ما إذا كانت العقدة على أي سمات. إرجاع الخاصية أتريبوتيكونت العدد من السمات للعقدة الحالية.

    while (reader.Read()) {
    switch (reader.NodeType)
    {
    case XmlNodeType.Element: // The node is an element.
    Console.Write("<" + reader.Name);

    while (reader.MoveToNextAttribute()) // Read the attributes.
    Console.Write(" " + reader.Name + "='" + reader.Value + "'");
    Console.WriteLine(">");
    break;
    case XmlNodeType.Text: //Display the text in each element.
    Console.WriteLine (reader.Value);
    break;
    case XmlNodeType. EndElement: //Display the end of the element.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
    break;
    }
    }

  9. حفظ وإغلاق المشروع.

إتمام سرد التعليمات البرمجية

using System;using System.Xml;

namespace ReadXMLfromFile
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
XmlTextReader reader = new XmlTextReader ("books.xml");
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name);
Console.WriteLine(">");
break;
case XmlNodeType.Text: //Display the text in each element.
Console.WriteLine (reader.Value);
break;
case XmlNodeType.EndElement: //Display the end of the element.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
break;
}
}
Console.ReadLine();
}
}
}

عينة الإخراج

<bookstore><book>
<title>
The Autobiography of Benjamin Franklin
</title>
<author>
<first-name>
Benjamin
</first-name>
<last-name>
Franklin
</last-name>
</author>
<price>
8.99
</price>
</book>
<book>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>

استكشاف الأخطاء وإصلاحها


عند اختبار التعليمات البرمجية، قد تتلقى رسالة الخطأ التالية استثناء: "استثناء غير معالج": System.Xml.XmlException: تعريف XML غير متوقع. يجب أن يكون تعريف XML العقدة الأولى في المستند، وأية أحرف المسافة البيضاء مسموح بالمثول أمامها.



معلومات إضافية: خطأ في النظام. حدوث خطأ استثناء على السطر التالي من التعليمات البرمجية: في حين
(reader.Read())

يحدث خطأ استثناء بسبب تعليمات معالجة غير صالحة. على سبيل المثال، قد تحتوي على إرشادات معالجة المسافات الدخيلة. ما يلي مثال تعليمات المعالجة غير صالحة:
<?xml version='1.0' ?>

هذه العلامة xml يحتوي على مساحة السابق '<' قوس. قم بإزالة المسافة البيضاء السابقة لحل الخطأ.

المراجع

يتوفر الملف التالي للتنزيل من مركز التنزيل ل Microsoft:
لمزيد من المعلومات حول فئات.NET Framework XML و C#، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:
لمزيد من المعلومات حول فئة XmlReader ، قم بزيارة موقع Msdn التالي:
لمزيد من المعلومات حول كيفية استخدام XmlReader قراءة بيانات XML، قم بزيارة مواقع ويب MSDN التالي:
خصائص

رقم الموضوع: 307548 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition

تعليقات