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


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

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

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

System.xml

في هذه المهمة

ملخص


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

العودة إلى أعلى

متطلبات

تفترض هذه المقالة أنك معتاد على المواضيع التالية:
  • مصطلحات XML
  • كيفية إنشاء وكيفية قراءة ملف XML

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

قراءة بيانات XML من ملف

يستخدم المثال التالي في هذه المقالة ملف يسمى Books.xml. يمكنك إنشاء ملف Books.xml الخاصة بك، أو يمكنك استخدام نموذج الملف الذي تم تضمينه مع بدايات سريعة (SDK) مجموعة أدوات تطوير برامج Microsoft.NET. يعتبر ملف Books.xml متوفر للتنزيل من "مركز تحميل microsoft":يجب نسخ ملف Books.xml إلى مجلد المشروع.


لقراءة بيانات XML من ملف، اتبع الخطوات التالية:
  1. بدء تشغيل Visual Studio.NET 2002 أو Visual Studio.NET 2003 أو Visual Studio 2005.
  2. في القائمة ملف ، أشر إلى
    جديد، ثم انقر فوق المشروع.

    على
    يظهر مربع حوار مشروع جديد .
  3. ضمن أنواع المشروع، انقر فوق مشاريع Visual c + +.

    ملاحظة: في Visual Studio 2005، يتم تغيير مشاريع Visual c + + إلى Visual c + +.
  4. ضمن قوالب، انقر فوق
    تطبيق c + + مدارة إذا كنت تستخدم Visual Studio.NET 2002.

    ضمن قوالب، انقر فوق تطبيق وحدة التحكم (.NET) إذا كنت تستخدم Visual Studio.NET 2003.


    ضمن قوالب، انقر فوق تطبيق وحدة التحكم CLR إذا كنت تستخدم Visual Studio 2005.
  5. في المربع الاسم ، اكتب
    Q815658، ثم انقر فوق موافق.
  6. إضافة مرجع إلى System.xml.dll في المشروع. للحصول على معلومات إضافية حول كيفية إضافة مراجع إلى مشروع Visual c + + مدارة، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

    310674 "كيفية": إضافة مراجع إلى مشروع Visual c + + مدارة

  7. تحديد باستخدام التوجيه في مساحة الاسم System::Xml كما يلي:
    using namespace System::Xml;
    يمكنك القيام بذلك حتى أن لم تكن لتأهيل فئة xmltextreader لاحقاً في التعليمات البرمجية الخاصة بك . يجب عليك استخدام باستخدام التوجيه قبل أية تعريفات الأخرى.
  8. إنشاء مثيل للكائن XmlTextReader . تعبئة كائن XmlTextReader بملف.xml.

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

    التعليمة البرمجية التالية تقوم بإنشاء مثيل من فئة XmlTextReader وثم يقوم بتحميل الملف Books.xml. أضف التعليمات البرمجية التالية إلى الدالة _tmain :
    XmlTextReader* reader = new XmlTextReader ("books.xml");
    ملاحظة: في Visual c + + 2005، يتم تغيير الدالة _tmain إلى الوظيفة الرئيسية .
  9. قراءة بيانات XML.

    ملاحظة: توضح هذه الخطوة حلقة خارجية بينما . خطوتين هذه الخطوة التالية توضح كيفية استخدام الحلقة أثناء قراءة بيانات XML.

    بعد إنشاء الكائن XmlTextReader ، استخدم الأسلوب قراءة لقراءة بيانات XML.

    يستمر الأسلوب قراءة التسلسل التنقل عبر ملف.xml حتى يصل الأسلوب قراءة إلى نهاية الملف. عندما يصل الأسلوب قراءة إلى نهاية الملف، إرجاع الأسلوب قراءة .
    while (reader->Read()){
    // Do some work here on the data.
    Console::WriteLine(reader->Name);
    }
  10. فحص العقد.

    لمعالجة بيانات XML، يحتوي كل سجل نوع عقده التي يمكن تحديدها من خاصية نوع عقده . اسم الخاصية والخاصيه قيمة إرجاع المعلومات التالية للعقدة الحالية أو للسجل الحالي:
    • اسم عقده اسم العنصر واسم السمة.
    • قيمة عقده نص العقدة.
    يحدد نوع عقده التعداد نوع العقدة. يعرض نموذج التعليمات البرمجية التالي اسم العناصر ونوع المستند. نموذج التعليمات البرمجية التالي يتجاهل سمات عنصر:
    while (reader->Read()){
    switch (reader->NodeType)
    {
    case XmlNodeType::Element: // The node is an element.
    Console::Write("<{0}", 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("</{0}", reader->Name);
    Console::WriteLine(">");
    break;
    }
    }
  11. قم بفحص السمات.

    يمكن أن تتضمن أنواع عقده عنصر قائمة العقد السمة المرتبطة بأنواع عقده عنصر. يمر الأسلوب موفيتونيكستاتريبوتي تسلسلياً كل سمة في العنصر. استخدام الخاصية هاساتريبوتيس لاختبار ما إذا كانت العقدة على أي سمات. إرجاع الخاصية أتريبوتيكونت العدد من السمات للعقدة الحالية.
    while (reader->Read()){
    switch (reader->NodeType)
    {
    case XmlNodeType::Element: // The node is an element.
    Console::Write("<{0}", reader->Name);

    while (reader->MoveToNextAttribute()) // Read the attributes.
    Console::Write(" {0}='{1}'", 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("</{0}", reader->Name);
    Console::WriteLine(">");
    break;
    }
    }
  12. حفظ الحل. إنشاء الحل.
  13. اضغط CTRL + F5 لتشغيل التطبيق العينة.
العودة إلى أعلى

عرض قائمة في Visual Studio.NET 2002 أو في Visual Studio.NET 2003 اكتمال التعليمات البرمجية

#include "stdafx.h"#include <tchar.h>

#using <mscorlib.dll>
#using <System.xml.dll>

using namespace System;
using namespace System::Xml;

void _tmain(void)
{
XmlTextReader* reader = new XmlTextReader ("books.xml");

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

while (reader->MoveToNextAttribute()) // Read the attributes.
Console::Write(" {0}='{1}'", 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("</{0}", reader->Name);
Console::WriteLine(">");
break;
}
}
Console::ReadLine();
}
ملاحظة: يجب إضافة خيار المحول البرمجي دعم وقت تشغيل اللغة العامة (/clr: oldsyntax) في Visual c + + 2005 ترجمة نموذج التعليمات البرمجية السابق بنجاح. لإضافة خيار المحول البرمجي دعم وقت تشغيل اللغة الشائعة في Visual c + + 2005، اتبع الخطوات التالية:

  1. انقر فوق المشروعومن ثم انقر فوق خصائص < اسم > المشروع .



    ملاحظة: < اسم > المشروع عنصرا نائبا لاسم المشروع.
  2. توسيع تكوين خصائص، وانقر فوق عام.

  3. انقر لتحديد دعم وقت تشغيل اللغة العامة, بناء الجملة القديمة (/clr: oldsyntax) في إعداد مشروع دعم "وقت تشغيل اللغة الشائعة" في الجزء الأيسر، انقر فوق تطبيق، ومن ثم انقر فوق موافق.

لمزيد من المعلومات حول وقت تشغيل اللغة العامة يدعم خيار برنامج التحويل البرمجي، قم بزيارة موقع Microsoft التالي على الويب:
(تجميع وقت تشغيل اللغة العامة) clr/
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
تطبيق هذه الخطوات لكل مادة.

العودة إلى أعلى

عرض إخراج العينة

ملاحظة: يحتوي الملف Books.xml الذي تم تضمينه مع بدايات سريعة SDK.NET اختلافين من الملف Books.xml من ارتباط التحميل المذكور في قسم "قراءة بيانات XML من ملف".
  • لا يحتوي الملف Books.xml من ارتباط التحميل
    السمة بوبليكاتيونداتي .
  • لا يحتوي الملف Books.xml من ارتباط التحميل
    سمة ISBN .
<bookstore><book genre='autobiography' publicationdate='1981' ISBN='1-861003-11-0'>
<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 genre='novel' publicationdate='1967' ISBN='0-201-63361-2'>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book genre='philosophy' publicationdate='1991' ISBN='1-861001-57-6'>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
العودة إلى أعلى

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

عند تشغيل تطبيق نموذج، قد تتلقى رسالة الخطأ التالية:

حدث استثناء غير معالج من نوع System.Xml.XmlException في System.xml.dll
معلومات إضافية: خطأ في النظام.
قد تتلقى رسالة الخطأ هذه إذا كنت تستخدم ملف Books.xml من ارتباط التحميل المذكور في قسم "قراءة بيانات XML من ملف". قد تحدث هذه المشكلة إذا كان الملف Books.xml مسافة في بداية الملف. لحل هذه المشكلة، افتح الملف Books.xml باستخدام محرر نص ثم قم بإزالة المسافة البيضاء.

العودة إلى أعلى

المراجع


للحصول على معلومات إضافية حول XML مع XmlReader القراءة، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:العودة إلى أعلى