Cum să citiți datele XML dintr-un fișier utilizând Visual C++

Pentru o versiune Microsoft Visual C# .NET a acestui articol, consultați
.

Pentru o versiune Microsoft Visual Basic .NET a acestui articol, consultați
.
Acest articol se referă la următorul nume de Microsoft .NET Framework Class Library:

System.xml

ÎN ACEASTĂ ACTIVITATE

Rezumat

Acest articol descrie modul de utilizare a clasei XmlTextReader să citească date XML dintr-un fișier. Clasa XmlTextReader furnizează direct analiză și tokenizing datelor XML. The
XmlTextReader class implementează, de asemenea, specificațiile XML 1.0, în afară de spații de nume, în specificațiile XML care este definit de World Wide Web Consortium (W3C). Acest articol descrie cum se rapid, flux de acces la date XML folosind un model de obiecte, cum ar fi XML Document Object Model (DOM) în loc de tokenized.

înapoi la început

Cerințe

Acest articol presupune că sunteţi familiarizat cu următoarele subiecte:

  • Terminologia XML

  • Cum se creează și cum să citiți un fișier XML


Lista următoare evidențiază hardware recomandate, software-ul, infrastructura de rețea și pachete service pack care aveți nevoie de:

  • Microsoft Visual Studio .NET

  • Microsoft Visual Studio 2005

înapoi la început

Citiți datele XML dintr-un fișier

În exemplul din acest articol utilizează un fișier denumit Books.xml. Aveți posibilitatea să creați propriul fişier Books.xml sau utilizați fișierul eșantion care este inclus în Microsoft .NET Software Development Kit (SDK) QuickStarts. Fișierul Books.xml, de asemenea, este disponibil pentru descărcare de la Microsoft Download Center:

Trebuie să copiați fișierul Books.xml în folderul de proiect.


Pentru a citi datele XML dintr-un fișier, urmați acești pași:

  1. Porniți Visual Studio .NET 2002, Visual Studio .NET 2003 sau Visual Studio 2005.

  2. În meniul fișier , indicați spre
    Nou, și apoi faceți clic pe proiect.

    The
    Apare caseta de dialog New Project .

  3. Sub Project Types, faceți clic pe Visual C++ proiecte.

    Notă În Visual Studio 2005, Visual C++ proiectele se modifică la Visual C++.

  4. Sub șabloane, faceți clic pe
    Gestionate C++ aplicație dacă utilizați Visual Studio .NET 2002.

    Sub șabloane, faceți clic pe Console Application (.NET) dacă utilizați Visual Studio .NET 2003.


    Sub șabloane, faceți clic pe CLR Console Application dacă utilizați Visual Studio 2005.

  5. În caseta nume , tastați
    Q815658, și apoi faceți clic pe OK.

  6. Adăugați o referință la System.xml.dll în proiect. Pentru informații suplimentare despre cum se adaugă referințe la un proiect gestionat Visual C++, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

    cum să: adăugaţi referințe la un proiect gestionat Visual C++

  7. Specificați folosind directivă în spațiul de nume System::Xml după cum urmează:

    using namespace System::Xml;

    Aceasta, astfel încât nu trebuie să fac XmlTextReader class declarațiile mai târziu în codul. Trebuie să utilizați folosind directivă înainte de orice alte declarații.

  8. Creați o instanță a obiectului XmlTextReader . Populează obiectul XmlTextReader cu fișierul .xml.

    De obicei, clasa XmlTextReader se utilizează dacă trebuie să acceseze datele XML brut fără globale de DOM. De aceea, clasa XmlTextReader oferă o modalitate mai rapidă să citească date XML. Clasa XmlTextReader are constructori diferite care specificați locația de date XML.

    Codul următor creează o instanță a clasei XmlTextReader şi apoi încarcă fișierul Books.xml. Adăugaţi următorul cod în funcția _tmain :

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

    Notă Visual C++ 2005, funcția _tmain se modifică la funcţia principală .

  9. Citiţi datele XML.

    Notă Acest pas demonstrează o buclă exterior în timp . Doi pași care urmaţi acest pas demonstrează cum se utilizează la curent în timp ce să citească date XML.

    După ce ați creat obiectul XmlTextReader , utilizați metoda de citire să citească date XML.

    Metoda de citire continuă să se deplaseze ordine fișierul .xml până când metoda de citire ajunge la sfârșitul fișierului. Atunci când metoda de citire ajunge la sfârșitul fișierului, metoda de citire returnează fals.

    while (reader->Read()){
    // Do some work here on the data.
    Console::WriteLine(reader->Name);
    }
  10. Examinați nodurile.

    Pentru a procesa datele XML, fiecare înregistrare are un tip de nod care poate fi determinat de NodeType proprietate. Proprietățile de nume și valoare returnează următoarele informații pentru nodul curent sau pentru a înregistra curent:

    • Numele nod care este numele elementului și numele de atribut.

    • Valoarea nod care este textul nod.

    Enumerarea NodeType determină tipul de noduri. Următorul exemplu de cod afișează numele elementelor și tipul de document. Următorul exemplu de cod ignoră elementul atribute:

    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. Examinați atributele.

    Tipuri de nod element poate include o listă de noduri atribut care sunt asociate cu tipuri de nod element. Metoda MovetoNextAttribute se mută în ordine prin fiecare atribut în elementul. Utilizați proprietatea HasAttributes pentru a testa dacă nodul are atributele de orice. Proprietatea AttributeCount Returnează numărul de atribute pentru nodul curent.

    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. Salvați soluția. Soluție de construire.

  13. Apăsați CTRL + F5 pentru a rula aplicaţia exemplu.

înapoi la început

Vezi codul complet listarea în Visual Studio .NET 2002 sau în 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();
}

Notă Trebuie să adăugați common language runtime suport compilator opțiunea (/ clr:oldSyntax) în Visual C++ 2005 pentru a compila cu succes eșantion de cod anterior. Pentru a adăuga common language runtime suport compilator opțiunea în Visual C++ 2005, urmați acești pași:

  1. Project, și apoi faceți clic pe < NumeProiect > Properties.



    Notă < NumeProiect > este un substituent pentru numele de proiect.

  2. Extindeți Proprietăți de configurareși apoi pe General.

  3. Faceți clic pentru a selecta Common Language Runtime suport, vechi sintaxă (/ clr:oldSyntax) în Common Language Runtime suport proiect setarea din panoul din dreapta, faceți clic pe se aplicăși apoi faceți clic pe OK.

Pentru mai multe informații despre la common language runtime compilator opțiune de asistență, vizitați următorul site Web Microsoft:

/CLR (common Language Runtime compilare)
Acești pași se aplică tot articolul.

înapoi la început

Vizualizare eșantion de ieşire

Notă Fișierul Books.xml care este inclus în .NET SDK QuickStarts are două diferențe din fișierul Books.xml de la linkul de descărcare, care este menționat în secțiunea "Citi datele dintr-un fișier XML".

  • Fișierul Books.xml de la linkul de descărcare nu are
    publicationdate atribut.

  • Fișierul Books.xml de la linkul de descărcare nu are
    Atribut 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>

înapoi la început

Depanare

Când executați aplicația de exemplu, este posibil să primiți următorul mesaj de eroare:

Excepție netratată de tip System.Xml.XmlException apărută în System.xml.dll
Informații suplimentare: erori de sistem.

Este posibil să primiți acest mesaj de eroare dacă utilizați fișierul Books.xml de la linkul de descărcare, care este menționat în secțiunea "Citi datele dintr-un fișier XML". Această problemă poate apărea dacă fișierul Books.xml are un spațiu alb la începutul fișierului. Pentru a rezolva această problemă, deschideți fișierul Books.xml utilizând un editor de text și apoi eliminați spațiul alb.

înapoi la început

Referințe

Pentru informații suplimentare despre XML cu XmlReader de citire, vizitați următorul site Web Microsoft Developer Network (MSDN):

înapoi la început

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×