Métodos System.Xml.XmlReader.Create

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

A maioria das Create sobrecargas inclui um parâmetro que aceita um XmlReaderSettingssettings objeto. Você pode usar esse 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 método Create pode aceitar outro objeto XmlReader. 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 os recursos, como melhor verificação de conformidade 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 XmlReader .NET inclua implementações concretas da classe, como o , e as XmlValidatingReader classes, XmlNodeReaderrecomendamos que você crie XmlReader instâncias usando o XmlTextReaderCreate método.

Configurações padrão

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

Configuração Default
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas Um objeto XmlSchemaSet vazio
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 Set
Os dados devem ser um documento XML bem formado. ConformanceLevel para Document.
Os dados devem ser uma entidade analisada XML bem formada. ConformanceLevel para Fragment.
Os dados devem ser validados em relação a um DTD. DtdProcessing em Parse
ValidationType para DTD.
Os dados devem ser validados em relação a um esquema XML. ValidationType em Schema
SchemasXmlSchemaSet ao a ser usado para validação. Observe que XmlReader não oferece suporte à validação de esquema XDR (XML-Data Reduced ).
Os dados devem ser validados em relação a um esquema XML embutido. ValidationType em Schema
ValidationFlags para ProcessInlineSchema.
Suporte de tipo. ValidationType em Schema
SchemasXmlSchemaSet ao usar.

XmlReader não oferece suporte à validação de esquema XDR (XML – reduzido a dados).

Programação assíncrona

No modo síncrono, o método lê o Create 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 para controlar o XmlResolver 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 retira 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 um com credenciais padrão para acessar um XmlUrlResolver 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 encadeia leitores para adicionar validação de esquema DTD e 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