Bagaimana membaca XML data dari file dengan menggunakan Visual C++

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 815658 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

Ringkasan

Artikel ini menjelaskan cara menggunakan XmlTextReader kelas untuk membaca XML data dari file. Kelas XmlTextReader menyediakan langsung parsing dan tokenizing data XML. Kelas XmlTextReader juga mengimplementasikan XML 1,0 spesifikasi, selain namespaces, dalam spesifikasi XML yang didefinisikan oleh Waring Wera Wanua Consortium (W3C). Artikel ini menjelaskan cara cepat, tokenized stream akses ke XML data daripada menggunakan model objek, seperti XML Model Obyek kumpulan dokumen (DOM) (DOM).

Persyaratan

Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut topik:
  • Terminologi XML
  • Bagaimana membuat dan bagaimana membaca XML file

Daftar berikut menguraikan fitur peranti penangkap keras, peranti penangkap lunak, infrastruktur jaringan, dan Service Pack yang Anda butuhkan:
  • Microsoft Visual Studio, .NET
  • Microsoft Visual Studio 2005

Membaca XML data dari berkas

Contoh dalam artikel ini menggunakan sebuah file yang bernama Books.xml. Anda dapat membuat file Books.xml Anda sendiri, atau Anda dapat menggunakan berkas contoh yang disertakan dengan Microsoft .NET Software Development Kit (SDK) QuickStarts. Books.xml file ini juga tersedia untuk di-download dari Microsoft Download Center:
Download Books.xml sekarang
Anda harus menyalin Books.xml file ke folder proyek.

Untuk membaca XML data dari file, ikuti langkah berikut:
  1. Mulai Visual Studio .NET 2002, Visual Studio.NET2003, atau Visual Studio 2005.
  2. Pada berkas menu, titikbaru, dan kemudian klik proyek.

    Proyek baru kotak dialog akan muncul.
  3. Dalam Jenis proyek, klik VisualC ++ proyek.

    Catatan Dalam Visual Studio 2005 VisualC ++ proyek berubah menjadi Visual C++.
  4. Dalam template, klikBerhasil C++ aplikasi jika Anda menggunakan Visual Studio.NET2002.

    Dalam template, klik ConsoleApplication (.NET) jika Anda menggunakan Visual Studio .NET 2003.

    Dalam template, klik CLR ConsoleApplication<b00> </b00> jika Anda menggunakan Visual Studio 2005.
  5. Dalam kotak nama , ketikQ815658, lalu klik OK.
  6. Menambahkan referensi ke System.xml.dll di theproject.Untuk informasi tambahan tentang cara menambahkan referensi ke proyek Visual C++ dikelola, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
    310674 CARA: Menambahkan referensi ke proyek Visual C++ dikelola
  7. Tentukan menggunakan direktif dalam namespace System::Xml sebagai berikut:
    using namespace System::Xml;
    Anda melakukan ini sehingga Anda tidak harus memenuhi syarat XmlTextReader kelas Deklarasi kemudian dalam kode Anda. Anda harus menggunakan menggunakan direktif sebelum Deklarasi-Deklarasi lain.
  8. Membuat sebuah instance objek XmlTextReader . Mengisi XmlTextReader objek dengan .xml file.

    Biasanya, kelas XmlTextReader digunakan jika Anda harus mengakses data XML mentah tanpa theoverhead DOM. Oleh karena itu, XmlTextReader kelas menyediakan cara cepat untuk membaca XML data. Kelas XmlTextReader memiliki berbeda konstruktor yang menentukan lokasi data theXML.

    Kode berikut membuat instance kelas XmlTextReader dan kemudian load Books.xml file. Tambahkan kode thefollowing untuk _tmain fungsi:
    XmlTextReader* reader = new XmlTextReader ("books.xml");
    Catatan Dalam Visual C++ 2005 fungsi _tmain berubah menjadi fungsi utama .
  9. Membaca XML data.

    Catatan Langkah ini menunjukkan luar sementara loop. Stepsthat dua mengikuti langkah ini menunjukkan bagaimana untuk menggunakan loop sementara untuk membaca XML data.

    Setelah youcreate objek XmlTextReader , menggunakan metode Baca untuk membaca XML data.

    Metode Baca terus secara berurutan bergerak melalui .xml file untilthe dibaca metode mencapai akhir file. Ketika membaca metode mencapai akhir file, membaca metode gulung balik palsu.
    while (reader->Read())
    {
    	// Do some work here on the data.
    	Console::WriteLine(reader->Name);
    }
  10. Memeriksa node.

    Untuk memproses XML data, eachrecord memiliki jenis node dapat ditentukan dari properti NodeType . Nama properti dan nilai properti kembali informasi berikut untuk orfor node saat ini rekor saat ini:
    • Nama node yang nama elemen dan nama atribut.
    • Nilai node yang teks node.
    Pencacahan NodeType menentukan jenis node. Codesample berikut Menampilkan nama unsur-unsur dan jenis kumpulan dokumen. Sampel followingcode mengabaikan elemen atribut:
    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. Memeriksa atribut.

    Elemen node jenis caninclude daftar node atribut yang berhubungan dengan elemen nodetypes. Metode MovetoNextAttribute secara berurutan bergerak melalui setiap atribut dalam elemen.Menggunakan properti HasAttributes untuk menguji apakah node atribut apapun. Properti AttributeCount kembali jumlah atribut untuk node saat ini.
    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. Simpan solusi. Membangun solusi.
  13. Tekan CTRL + F5 untuk menjalankan aplikasi sampel.

Lihat kode lengkap daftar dalam Visual Studio .NET 2002 atau Visual Studio.NET2003

#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();
}
Catatan Anda harus menambahkan common language runtime dukungan kompiler pilihan (/ clr:oldSyntax) di Visual C++ 2005 untuk berhasil mengumpulkan sampel kode sebelumnya.Untuk menambahkan bahasa runtime dukungan kompiler pilihan umum Visual C++ 2005, ikuti langkah berikut:
  1. Klik proyek, dan kemudian klik<ProjectName></ProjectName> Properti.

    Catatan<ProjectName></ProjectName> adalah pengganti untuk nama proyek.
  2. Memperluas Konfigurasi properti, dan kemudian klik umum.
  3. Klik untuk memilih Common Language Runtime dukungan, sintaks tua (/ clr:oldSyntax) dalam Common Language Runtime mendukung pengaturan proyek di panel kanan-atas, klik Terapkan, dan kemudian klik OK.
Untuk informasi lebih lanjut tentang common language runtime dukungan kompiler pilihan, kunjungi Web site Microsoft berikut:
/CLR (common Language Runtime kompilasi)
http://msdn2.Microsoft.com/en-US/Library/k8d11d4s.aspx
Langkah-langkah berikut berlaku untuk seluruh artikel.

Lihat contoh Keluaran

Catatan File Books.xml yang disertakan dengan .NET SDK QuickStarts memiliki dua perbedaan dari Books.xml file dari link download yang disebutkan di bagian "Baca data XML dari file".
  • Books.xml file dari download link tidak memiliki atributpublicationdate .
  • Books.xml file dari download link tidak memiliki atributISBN .
<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>

Pemecahan masalah

Ketika Anda menjalankan aplikasi contoh, Anda mungkin menerima pesan galat berikut:

Pengecualian tidak tertangani jenis System.Xml.XmlException terjadi di System.xml.dll
Informasi tambahan: kesalahan sistem.
Anda mungkin menerima pesan galat ini jika Anda menggunakan Books.xml file dari link download yang disebutkan di bagian "Baca data XML dari file". Masalah ini dapat terjadi jika Books.xml file memiliki ruang putih pada permulaan file. Untuk mengatasi masalah ini, buka Books.xml file dengan menggunakan editor teks dan kemudian menghapus spasi putih.

Referensi

Untuk informasi tambahan tentang membaca XML dengan XmlReader, kunjungi situs web Microsoft Developer Network (MSDN) berikut:
http://msdn2.Microsoft.com/en-US/Library/aa720470 (VS.71).aspx

Properti

ID Artikel: 815658 - Kajian Terakhir: 23 November 2013 - Revisi: 5.0
Berlaku bagi:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Kata kunci: 
kbdownload kbcode kbxml kbhowtomaster kbmt KB815658 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 815658

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com