Udostępnij za pośrednictwem


Metody System.Xml.XmlReader.Create

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Create Większość przeciążeń obejmuje settings parametr, który akceptuje XmlReaderSettings obiekt. Tego obiektu można użyć do:

  • Określ, które funkcje mają być obsługiwane w XmlReader obiekcie.
  • Użyj ponownie obiektu, XmlReaderSettings aby utworzyć wielu czytników. Możesz użyć tych samych ustawień, aby utworzyć wielu czytelników z tą samą funkcjonalnością. Możesz też zmodyfikować ustawienia w wystąpieniu XmlReaderSettings i utworzyć nowego czytnika z innym zestawem funkcji.
  • Dodawanie funkcji do istniejącego czytnika XML. Metoda Create może zaakceptować inny XmlReader obiekt. Obiektem bazowym XmlReader może być czytnik zdefiniowany przez użytkownika, XmlTextReader obiekt lub inne XmlReader wystąpienie, do którego chcesz dodać dodatkowe funkcje.
  • Korzystaj w pełni z funkcji, takich jak lepsze sprawdzanie zgodności i zgodność z zaleceniem XML 1.0 (czwarta wersja), które są dostępne tylko dla XmlReader obiektów utworzonych przez metodę statyczną Create .

Uwaga

Mimo że platforma .NET zawiera konkretne implementacje XmlReader klasy, takie jak XmlTextReader, XmlNodeReaderi XmlValidatingReader klasy, zalecamy utworzenie XmlReader wystąpień przy użyciu Create metody .

Ustawienia domyślne

Jeśli używasz Create przeciążenia, które nie akceptuje XmlReaderSettings obiektu, są używane następujące domyślne ustawienia czytnika:

Ustawienie Wartość domyślna
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Pusty XmlSchemaSet obiekt
ValidationFlags ProcessIdentityConstraints Włączone
ValidationType None
XmlResolver null

Ustawienia dla typowych scenariuszy

Poniżej przedstawiono XmlReaderSettings właściwości, które należy ustawić dla niektórych typowych scenariuszy czytnika XML.

Wymaganie Zestaw
Dane muszą być dobrze sformułowanym dokumentem XML. ConformanceLevel do Document.
Dane muszą być prawidłowo sformułowaną jednostką analizowaną XML. ConformanceLevel do Fragment.
Dane muszą być weryfikowane względem dtd. DtdProcessing do Parse
ValidationType do DTD.
Dane muszą być weryfikowane względem schematu XML. ValidationType do Schema
SchemasXmlSchemaSet do elementu , który ma być używany do weryfikacji. Należy pamiętać, że XmlReader nie obsługuje weryfikacji schematu XML-Data Reduced (XDR).
Dane muszą być weryfikowane względem wbudowanego schematu XML. ValidationType do Schema
ValidationFlags do ProcessInlineSchema.
Obsługa typów. ValidationType do Schema
SchemasXmlSchemaSet do użycia.

XmlReader nie obsługuje weryfikacji schematu XML-Data Reduced (XDR).

Programowanie asynchroniczne

W trybie Create synchronicznym metoda odczytuje pierwszy fragment danych z buforu pliku, strumienia lub czytnika tekstu. Może to zgłosić wyjątek, jeśli operacja we/wy zakończy się niepowodzeniem. W trybie asynchronicznym pierwsza operacja we/wy występuje z operacją odczytu, więc wyjątki, które wystąpią, zostaną zgłoszone podczas operacji odczytu.

Zagadnienia dotyczące zabezpieczeń

Domyślnie XmlReader obiekt używa XmlUrlResolver obiektu bez poświadczeń użytkownika do otwierania zasobów. Oznacza to, że domyślnie czytnik XML może uzyskać dostęp do dowolnej lokalizacji, która nie wymaga poświadczeń. Użyj właściwości , XmlResolver aby kontrolować dostęp do zasobów:

  • Ustaw XmlResolver na XmlSecureResolver obiekt, aby ograniczyć zasoby, do których może uzyskiwać dostęp czytnik XML, lub...
  • Ustaw XmlResolver wartość , aby null uniemożliwić czytnikowi XML otwieranie jakichkolwiek zasobów zewnętrznych.

Przykłady

W tym przykładzie tworzony jest czytnik XML, który usuwa nieistotne odstępy, usuwa komentarze i wykonuje sprawdzanie zgodności na poziomie fragmentu.

XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)

W poniższym przykładzie użyto elementu XmlUrlResolver z domyślnymi poświadczeniami, aby uzyskać dostęp do pliku.

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)

Poniższy kod opakowuje wystąpienie czytnika w innym czytniku.

XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)

W tym przykładzie czytniki są łańcuchami w celu dodania walidacji schematu DTD i XML.

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation