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