Métodos System.Xml.XmlReader.Create

Observação

Este artigo fornece observações complementares à documentação de referência para esta API.

A maioria das Create sobrecargas inclui um settings parâmetro que aceita um XmlReaderSettings objeto. Você pode usar este objeto para:

  • Especifique quais recursos você deseja oferecer suporte no XmlReader objeto.
  • Reutilize o XmlReaderSettings objeto para criar vários leitores. Você pode usar as mesmas configurações para criar vários leitores com a mesma funcionalidade. Ou, você pode modificar as configurações em uma XmlReaderSettings instância e criar um novo leitor com um conjunto diferente de recursos.
  • Adicione recursos a um leitor XML existente. O Create método pode aceitar outro XmlReader objeto. O objeto subjacente XmlReader pode ser um leitor definido pelo usuário, um XmlTextReader objeto ou outra XmlReader instância à qual você deseja adicionar recursos adicionais.
  • Aproveite ao máximo recursos como melhor verificação de conformidade e cumprimento da recomendação XML 1.0 (quarta edição), disponíveis apenas em objetos XmlReader criados pelo método estático Create.

Observação

Embora o .NET inclua implementações concretas da XmlReader classe, como , XmlTextReaderXmlNodeReadere as XmlValidatingReader classes, recomendamos que você crie XmlReader instâncias usando o Create método.

Configurações padrão

Ao utilizar uma Create sobrecarga que não aceita o XmlReaderSettings objeto, as seguintes configurações padrão do leitor serão usadas:

Configurações Predefinido
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Um objeto vazio XmlSchemaSet
ValidationFlags ProcessIdentityConstraints ativado
ValidationType None
XmlResolver null

Configurações para cenários comuns

Aqui estão as XmlReaderSettings propriedades que você deve definir para alguns dos cenários típicos de leitor XML.

Requisito Conjunto
Os dados devem ser um documento XML bem formado. ConformanceLevel para Document.
Os dados devem ser uma entidade XML analisada bem formada. ConformanceLevel para Fragment.
Os dados devem ser validados em relação a uma DTD. DtdProcessing a Parse
ValidationType para DTD.
Os dados devem ser validados em relação a um esquema XML. ValidationType a Schema
Schemas para o XmlSchemaSet a utilizar para validação. Observe que XmlReader não suporta validação de esquema reduzida (XDR) XML-Data.
Os dados devem ser validados em relação a um esquema XML embutido. ValidationType a Schema
ValidationFlags para ProcessInlineSchema.
Suporte a tipos ValidationType a Schema
Schemas para o XmlSchemaSet usar.

XmlReader não suporta a validação de esquema XDR reduzido pelo XML-Data.

Programação assíncrona

No modo síncrono, o Create método lê o primeiro bloco de dados do buffer do arquivo, fluxo ou leitor de texto. Isso pode gerar uma exceção se uma operação de E/S falhar. No modo assíncrono, a primeira operação de E/S ocorre com uma operação de leitura, portanto, as exceções que surgirem serão lançadas quando a operação de leitura ocorrer.

Considerações de segurança

Por padrão, o XmlReader usa um XmlUrlResolver objeto sem credenciais de usuário para abrir recursos. Isso significa que, por padrão, o leitor XML pode acessar qualquer local que não exija credenciais. Use a propriedade XmlResolver para controlar o acesso aos recursos.

  • Defina XmlResolver como um XmlSecureResolver objeto para restringir os recursos que o leitor XML pode acessar ou...
  • Defina XmlResolver como null para impedir que o leitor XML abra quaisquer recursos externos.

Exemplos

Este exemplo cria um leitor XML que remove espaços em branco insignificantes, remove comentários e executa a verificação de conformidade no nível do fragmento.

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)

O exemplo a seguir usa um XmlUrlResolver com credenciais padrão para acessar um arquivo.

// 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)

O código a seguir envolve uma instância de leitor dentro de outro leitor.

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)

Este exemplo encadeia leitores para adicionar DTD e validação de esquema 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