Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
nullpara 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