Compartilhar via


Métodos System.Xml.XmlReader.Create

Este artigo fornece comentários 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 ter 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.
  • Tire o máximo proveito de recursos como melhor verificação e conformidade com a recomendação XML 1.0 (quarta edição), que estão disponíveis apenas em XmlReader objetos criados pelo método estático Create.

Observação

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

Configurações padrão

Se você usar uma Create sobrecarga que não aceita um XmlReaderSettings objeto, as seguintes configurações de leitor padrão serão usadas:

Configurações Padrão
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 Habilitado
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 às Document.
Os dados devem ser uma entidade analisada por XML bem formada. ConformanceLevel às Fragment.
Os dados devem ser validados em relação a um DTD. DtdProcessing a Parse
ValidationType às DTD.
Os dados devem ser validados em relação a um esquema XML. ValidationType a Schema
Schemas ao XmlSchemaSet a ser usado para validação. Observe que XmlReader não dá suporte à validação de esquema XML-Data Reduzido (XDR).
Os dados devem ser validados em um esquema XML embutido. ValidationType a Schema
ValidationFlags às ProcessInlineSchema.
Suporte de tipos. ValidationType a Schema
Schemas para XmlSchemaSet usar.

XmlReader não dá suporte à validação de esquema XML-Data Reduzido (XDR).

Programação assíncrona

No modo síncrono, o Create método lê a primeira parte dos dados do buffer do arquivo, fluxo ou leitor de texto. Isso poderá 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 geradas durante essa operação.

Considerações de segurança

Por padrão, ele XmlReader usa um XmlUrlResolver objeto sem credenciais de usuário para abrir recursos. Isso significa que, por padrão, o leitor de XML pode acessar qualquer local que não exija credenciais. Use a XmlResolver propriedade 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 para null para evitar que o leitor XML abra quaisquer recursos externos.

Exemplos

Este exemplo cria um leitor XML que remove espaço em branco insignificante, remove comentários e executa a verificação de conformidade em nível de 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 uma credenciais padrão XmlUrlResolver 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 encapsula uma instância de leitor em 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 orienta leitores a adicionar validação de DTD e 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