Visual C++ kullanarak dosyadan XML verilerini okuma
Bu makalede, bir dosyadan XmlTextReader
XML verilerini okumak için sınıfının nasıl kullanılacağı gösterilmektedir.
Orijinal ürün sürümü: Visual C++
Özgün KB numarası: 815658
Özet
Bu makalede, bir dosyadan XmlTextReader
XML verilerini okumak için sınıfının nasıl kullanılacağı açıklanmaktadır. sınıfı, XmlTextReader
XML verilerinin doğrudan ayrıştırma ve belirteç haline getirmesini sağlar. XmlTextReader
sınıfı, World Wide Web Consortium (W3C) tarafından tanımlanan XML belirtiminde ad alanlarına ek olarak XML 1.0 belirtimini de uygular. Bu makalede, XML Belge Nesne Modeli (DOM) gibi bir nesne modeli kullanmak yerine XML verilerine hızlı, belirteçli akış erişiminin nasıl gerçekleştirildiği açıklanır.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz. Visual C# kullanarak dosyadan XML okuma.
Bu makale, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanını ifade eder:System.xml
Gereksinimler
Bu makalede, aşağıdaki konular hakkında bilgi sahibi olduğunuz varsayılır:
- XML terminolojisi
- XML dosyası oluşturma ve okuma
Aşağıdaki listede ihtiyacınız olan önerilen donanım, yazılım, ağ altyapısı ve hizmet paketleri özetlenmiştir:
- Microsoft Visual Studio .NET
- Microsoft Visual Studio 2005
Dosyadan XML verilerini okuma
Bu makaledeki örnekte Books.xmladlı bir dosya kullanılır. Kendi Books.xml dosyanızı oluşturabilir veya Microsoft .NET Yazılım Geliştirme Seti (SDK) Hızlı Başlangıçları'na dahil edilen örnek dosyayı kullanabilirsiniz. Books.xml dosyasını proje klasörüne kopyalamanız gerekir.
Bir dosyadan XML verilerini okumak için şu adımları izleyin:
Visual Studio .NET 2002, Visual Studio .NET 2003 veya Visual Studio 2005'i başlatın.
Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklayın.
Yeni Proje iletişim kutusu görüntülenir.
Proje Türleri'nin altında Visual C++ Projeleri'ne tıklayın.
Not
Visual Studio 2005'te , Visual C++ ProjeleriVisual C++ olarak değiştirilir.
Visual Studio .NET 2002 kullanıyorsanız Şablonlar altında Yönetilen C++ Uygulaması'nı tıklatın.
Visual Studio .NET 2003 kullanıyorsanız Şablonlar altında Konsol Uygulaması (.NET) öğesine tıklayın.
Visual Studio 2005 kullanıyorsanız Şablonlar altında CLR Konsol Uygulaması'nı tıklatın.
Ad kutusuna Q815658 yazıp Tamam'a tıklayın.
Projeye bir başvuru
System.xml.dll
ekleyin. Yönetilen Visual C++ projesine başvuru ekleme hakkında daha fazla bilgi için bkz. Yönetilen Visual C++ projesine başvuru eklemeAd alanında using yönergesini
System::Xml
aşağıdaki gibi belirtin:using namespace System::Xml;
Bunu, kodunuzun ilerleyen bölümlerinde sınıf bildirimlerini nitelemeniz
XmlTextReader
gerekmemesi için yaparsınız. Diğer bildirimlerden önce using yönergesini kullanmanız gerekir.Nesnesinin bir örneğini
XmlTextReader
oluşturun.XmlTextReader
nesneyi .xml dosyasıyla doldurun.Genellikle,
XmlTextReader
DOM yükü olmadan ham XML verilerine erişmeniz gerekiyorsa sınıfı kullanılır. Bu nedenle,XmlTextReader
sınıfı XML verilerini okumak için daha hızlı bir yol sağlar. sınıfı,XmlTextReader
XML verilerinin konumunu belirten farklıconstructors
bir değere sahiptir.Aşağıdaki kod sınıfının bir örneğini
XmlTextReader
oluşturur ve ardındanBooks.xml dosyasını yükler. İşleve_tmain
aşağıdaki kodu ekleyin:XmlTextReader* reader = new XmlTextReader ("books.xml");
Not
Visual C++ 2005'te
_tmain
işlev ana işlev olarak değiştirilir.XML verilerini okuyun.
Not
Bu adımda bir dış while döngüsü gösterilmektedir. Bu adımı izleyen iki adım, XML verilerini okumak için while döngüsünün nasıl kullanılacağını gösterir.
Nesneyi oluşturduktan
XmlTextReader
sonra, XML verilerini okumak için Read yöntemini kullanın.Read yöntemi, Read yöntemi dosyanın sonuna ulaşana kadar .xml dosyasında sırayla hareket etmeye devam eder. Read yöntemi dosyanın sonuna ulaştığında Read yöntemi false döndürür.
while (reader->Read()) { // Do some work here on the data. Console::WriteLine(reader->Name); }
Düğümleri inceleyin.
XML verilerini işlemek için her kaydın özelliğinden
NodeType
belirlenebilen bir düğüm türü vardır.Name
özelliği veValue
özelliği, geçerli düğüm veya geçerli kayıt için aşağıdaki bilgileri döndürür:- Öğe adı ve öznitelik adı olan düğüm adı.
- Düğüm metni olan düğüm değeri.
Sabit
NodeType
listesi düğüm türünü belirler. Aşağıdaki kod örneği, öğelerin adını ve belge türünü görüntüler. Aşağıdaki kod örneği öğe özniteliklerini yoksayar: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; } }
Öznitelikleri inceleyin.
Öğe düğümü türleri, öğe düğümü türleriyle ilişkili öznitelik düğümlerinin listesini içerebilir. yöntemi,
MovetoNextAttribute
öğesindeki her öznitelikte sırayla hareket eder. DüğümdeHasAttributes
öznitelik olup olmadığını test etmek için özelliğini kullanın. özelliği,AttributeCount
geçerli düğüm için öznitelik sayısını döndürür.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; } }
Çözümü kaydedin. Çözümü oluşturun.
Örnek uygulamayı çalıştırmak için CTRL+F5 tuşlarına basın.
Visual Studio .NET 2002 veya Visual Studio .NET 2003'te kod listesinin tamamını görüntüleme
#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
Önceki kod örneğini başarıyla derlemek için Visual C++ 2005'te ortak dil çalışma zamanı desteği derleyici seçeneğini (/clr:oldSyntax
) eklemeniz gerekir. Visual C++ 2005'te ortak dil çalışma zamanı desteği derleyici seçeneğini eklemek için şu adımları izleyin:
Project'e ve ardından ProjectName> Özellikleri'ne tıklayın<.
Not
<ProjectName> , projenin adı için bir yer tutucudur.
Yapılandırma Özellikleri'ni genişletin ve genel'e tıklayın.
Sağ bölmedeki Ortak Dil Çalışma Zamanı destek projesi ayarında Ortak Dil Çalışma Zamanı Desteği, Eski Söz Dizimi (/clr:oldSyntax) öğesini seçmek için tıklayın, Uygula'ya ve ardından Tamam'a tıklayın.
Ortak dil çalışma zamanı desteği derleyici seçeneği hakkında daha fazla bilgi için bkz. /clr (Ortak Dil Çalışma Zamanı Derlemesi).
Bu adımlar makalenin tamamı için geçerlidir.
Örnek çıkışı görüntüleme
<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>
Sorun giderme
Örnek uygulamayı çalıştırdığınızda aşağıdaki hata iletisini alabilirsiniz:
System.Xml türünde işlenmeyen bir özel durum. XmlException, System.xml.dll Ek bilgi: Sistem hatasında oluştu.
Başvurular
XmlReader ile XML okuma hakkında daha fazla bilgi için bkz. XmlReader ile XML Okuma.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin