Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
La mayoría de las Create sobrecargas incluyen un settings
parámetro que acepta un XmlReaderSettings objeto . Puede usar este objeto para:
- Especifique qué características desea admitir en el XmlReader objeto .
- Vuelva a usar el XmlReaderSettings objeto para crear varios lectores. Puede usar la misma configuración para crear varios lectores con la misma funcionalidad. O bien, puede modificar la configuración de una XmlReaderSettings instancia y crear un nuevo lector con un conjunto diferente de características.
- Agregue características a un lector XML existente. El Create método puede aceptar otro XmlReader objeto. El objeto subyacente XmlReader puede ser un lector definido por el usuario, un XmlTextReader objeto u otra XmlReader instancia a la que desea agregar características adicionales.
- Saque el máximo partido a características como la comprobación de conformidad y el cumplimiento con la recomendación XML 1.0 (cuarta edición) que solo están disponibles en objetos XmlReader creados por el método estático Create.
Nota:
Aunque .NET incluye implementaciones concretas de la XmlReader clase , como XmlTextReader, XmlNodeReadery las XmlValidatingReader clases, se recomienda crear XmlReader instancias mediante el Create método .
Configuración predeterminada
Si usa una sobrecarga Create que no acepta un objeto XmlReaderSettings, se utiliza la siguiente configuración predeterminada del lector:
Configuración | Predeterminado |
---|---|
CheckCharacters | true |
ConformanceLevel | ConformanceLevel.Document |
IgnoreComments | false |
IgnoreProcessingInstructions | false |
IgnoreWhitespace | false |
LineNumberOffset | 0 |
LinePositionOffset | 0 |
NameTable | null |
DtdProcessing | Prohibit |
Schemas | Un objeto vacío XmlSchemaSet |
ValidationFlags | ProcessIdentityConstraints Habilitado |
ValidationType | None |
XmlResolver | null |
Configuraciones para escenarios comunes
Estas son las XmlReaderSettings propiedades que debe establecer para algunos de los escenarios típicos del lector XML.
Requisito | Establecer |
---|---|
Los datos deben ser un documento XML bien formado. | De ConformanceLevel a Document. |
Los datos deben ser una entidad analizada XML bien formada. | De ConformanceLevel a Fragment. |
Los datos deben validarse con un DTD. |
DtdProcessing a Parse De ValidationType a DTD. |
Los datos deben validarse con un esquema XML. |
ValidationType a Schema Schemas a la XmlSchemaSet que se va a usar para validación. Tenga en cuenta que XmlReader no admite la validación de esquemas de XML-Data reducido (XDR). |
Los datos deben validarse contra un esquema XML en línea. |
ValidationType a Schema De ValidationFlags a ProcessInlineSchema. |
Soporte de tipos. |
ValidationType a Schema Schemas al XmlSchemaSet que se va a usar. |
XmlReader no admite la validación del esquema XML-Data Reduced (XDR).
Programación asincrónica
En modo sincrónico, el método Create lee el primer bloque de datos del búfer del archivo, la secuencia o el lector de texto. Esto puede producir una excepción si se produce un error en una operación de E/S. En modo asincrónico, la primera operación de E/S se produce con una operación de lectura, por lo que las excepciones que surjan se producirán cuando se produzca la operación de lectura.
Consideraciones de seguridad
De forma predeterminada, XmlReader usa un XmlUrlResolver objeto sin credenciales de usuario para abrir recursos. Esto significa que, de forma predeterminada, el lector XML puede acceder a cualquier ubicación que no requiera credenciales. Use la propiedad XmlResolver para controlar el acceso a los recursos.
- Establezca XmlResolver en un XmlSecureResolver objeto para restringir los recursos a los que puede acceder el lector XML...
- Establézcalo XmlResolver en
null
para impedir que el lector XML abra recursos externos.
Ejemplos
En este ejemplo se crea un lector XML que quita espacios en blanco insignificantes, se quitan comentarios y se realiza una comprobación de conformidad de nivel 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)
En el ejemplo siguiente se usa un XmlUrlResolver con credenciales predeterminadas para acceder a un archivo.
// 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)
El código siguiente encapsula una instancia de lector dentro de otro lector.
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)
En este ejemplo se obliga a los lectores a agregar la validación de esquemas XML y DTD.
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