La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Visual Studio 2005 XML en Framework.NET 2.0 Código: HOL-VS511 Alejandro Martín Bailón

Presentaciones similares


Presentación del tema: "Visual Studio 2005 XML en Framework.NET 2.0 Código: HOL-VS511 Alejandro Martín Bailón"— Transcripción de la presentación:

1 Visual Studio 2005 XML en Framework.NET 2.0 Código: HOL-VS511 Alejandro Martín Bailón

2 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

3 Introducción Objetivos en el diseño de XML para.NET Framework: –Compatibilidad con los estándares W3C –Extensibilidad –Arquitectura conectable –Rendimiento –Integración con ADO.NET.NET Framework ofrece: –Conjunto integrado de clases como elementos básicos de.NET Framework –Solución abierta, interoperable y compatible con los estándares. –Namespace System.xml.dll

4 Integración de XML en.NET CaracterísticaUtilización SerializaciónLos objetos se pueden serializar mediante SOAP (protocolo simple de acceso a objetos) ADO.NETComunicación con base de datos, esquema de base de datos, consultas XPath sobre conjuntos de datos. Acceso remotoTransmisión de datos codificados como mensajes SOAP Servicios Web XMLSOAP, WSDL (lenguaje de definición del Servicio Web), UDDI (descripción universal, localización e integración) Archivos de configuración Los archivos de configuración, que afectan a muchas partes del.NET Framework, se especifican utilizando XML

5 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

6 Lectura de ficheros XML XmlReader –Acceso de solo lectura –Desplazamiento solo hacia delante XmlReader implementa: –XMLTextReader: Comprueba si el código XML es correcto, no admite validación, no permite expandir entidades generales, no admite atributos predeterminados. –XmlValidatingReader: Puede validar datos mediante DTD o esquemas, puede expandir entidades generales y admite atributos predeterminados. OBSOLETO EN VS2005

7 XmlTextReader Introducción Constructores Propiedades –Acceso al estado –Control del comportamiento –Trabajar con nodos XML Tipos de nodos Nombres de nodo Valores de los nodos Otras propiedades Métodos –Operaciones de lectura –Acceso a los atributos Cerrar un XmlTextReader

8 Introducción Impone las reglas de formato XML correcto No proporciona validación de datos Comprueba que los nodos DocumentType tienen el formato correcto, comprueba si DTD tiene el formato correcto, pero no valida utilizando DTD Para los nodos cuya propiedad NodeType es XmlNodeType.EntityReference, se devuelve un solo nodo EntityReference vacío No expande atributos predeterminados

9 Constructores Proporciona un conjunto de constructores para especificar la fuente ConstructorComentario XmlTextReader(Stream)Crea un XmlTextReader sacando el XML de una clase derivada de System.IO.Stream XmlTextReader(String)Crea un XmlTextReader sacando el XML de un archivo con la URL dada XmlTextReader(TextReader)Crea un XmlTextReader sacando el XML de un System.IO.TextReader

10 Constructores Ejemplos –Utilizando como fuente un fichero localizado en el directorio del ensamblado –Utilizando como fuente un XML almacenado en un String XmlTextReader xmlReader = new XmlTextReader(fichero.xml); XmlTextReader xmlReader = new XmlTextReader(new StringReader(textoXml));

11 Acceso al estado Proporciona propiedades que controlan el comportamiento del lector y acceder a su estado La propiedad ReadState proporciona acceso de sólo lectura al estado actual del XmlTextReader ValorComentario ClosedXmlTextReader cerrado con el método close EndOfFileSe ha llegado al final de la fuente de entrada (EOF) ErrorSe ha producido un error que impide otras operaciones InitialXmlTextReader creado, pero no se han invocado operaciones de lectura InterativeAl menos una operación de lectura

12 Control del comportamiento Propiedades para controlar la forma en que se analizan los ficheros XML PropiedadComentario NamespacesControla si soporta espacios de nombres según la recomendación del W3C WhitespaceHandlingObtiene o establece un valor que indica cómo se controla el espacio en blanco. NormalizationObtiene o establece un valor que indica si se deben normalizar los valores de atributo y de espacio en blanco. XmlResolverObtiene o establece un valor que indica si se deben normalizar los valores de atributo y de espacio en blanco.

13 Trabajar con nodos XML Expone información del nodo actual mediante propiedades La propiedad XmlNodeType devuelve el tipo de nodo actual. Los tipos son los definidos en la especificación de W3C mas cinco extensiones no estándares añadidas por Microsoft Tipos estándar: Attribute, CDATA, Comment, DocumentType, Element, EntityReference, ProcessingInstructions, Text.

14 Tipos de Nodos Nodos específicos de Microsoft XmlNodeTypeDescripción NoneIndica que no hay nodo actual. O no se ha producido ninguna operación de lectura o se ha llegado al final de la fuente XML EndElementEtiqueta final de un documento XML SignificantWhitespaceEspacio en blanco entre marcas en un modelo de contenido mixto o espacio en blanco dentro del ámbito de xml:space="preserve". WhitespaceRepresenta un espacio en blanco en el contenido de un elemento XmlDeclarationRepresenta el nodo de declaración

15 Nombres de nodo Las propiedades Name y LocalName devuelven los nombres del nodo actual. La propiedad Name devuelve el nombre completo incluyendo cualquier prefijo del espacio de nombres La propiedad LocalName delvuelve el nombre del nodo sin prefijos de espacios de nombres Según el tipo de nodo, varía el nombre devuelto por la propieda

16 Nombres de nodo XmlNodeTypeNombre devuelto AttributeEl nombre del atributo DocumentTypeEl nombre del tipo de documento ElementEl nombre de la etiqueta EntityReferenceEl nombre de la referencia a la entidad ProcessingInstructionEl destino de la instrucción de proceso XmlDeclarationLa cadena xml OtrosString.Empty

17 Valores de los nodos La propiedad Value devuelve el valor textual del nodo actual. Este depende del tipo de nodo: XmlNodeTypeValor devuelto AttributeEl valor del atributo CDATAEl contenido de la sección CDATA CommentEl contenido del comentario DocumentTypeEl subconjunto interno SignificantWhitespaceEl espacio en blanco del ámbito xml:space=preserve TextEl contenido del nodo de texto ProcessingInstructionTodo el contenido excepto el destino XmlDeclarationEl contenido de la declaración OtrosString.Empty

18 Otras propiedades PropiedadComentarios AttributeCountRecupera el número de atributos del nodo actual BaseURIRecupera el identificador de recurso base del nodo actual CanResolveEntityFalse: No implementado DepthProfundidad del nodo actual HasAttributesTrue si tiene atributos, false en caso contrario IsEmptyElementTrue si el nodo es de tipo Element y termina en /> LineNumberLínea actual de la fuente XML LinePositionPosición de la línea actual de la fuente XML NamespaceURIURI del nodo actual QuoteCharRecupera el carácter de comillas para encerrar el valor de un Attribute de un nodo

19 Operaciones de lectura Son las operaciones que cambian la posición del cursor OperaciónComentarios ReadIntenta mover el cursor al siguiente nodo en el archivo fuente XML. Si lo consigue devuelve true, sino hay mas nodos false MoveToContentDetermina si el nodo actual es un nodo de contenido (Text, CDDATA, Element, EndElement, EntityReference y EndEntity). Si no es de contenido lo pasa por alto hasta que llegue a uno de contenido o al final del fichero. SkipEl cursor se mueve al siguiente hermano del nodo actual. Si el nodo no tiene hijos equivale a Read IsStartElementInvoca a MoveToContent, y devuelve true si el nodo actual es una etiqueta de comienzo o un elemento vacío ReadStartElementInvoca a IsStartElement seguido de un método Read, si el resultado de IsStartElement es falso se lanza una excepción ReadEndElementComprueba si el nodo actual es una etiqueta de cierre y luego avanza el cursor al siguiente nodo

20 Lectura de un fichero XML

21 Acceso a los atributos Tres tipos de nodos que aceptan atributos: Element, XmlDeclaration y DocumentType Los atributos se leen siempre dentro del nodo que los contiene Dos mecanismos para acceder a los atributos del nodo actual –Acceso directo al valor del atributo –Acceso al nodo atributo

22 Acceso directo al valor del atributo Se accede utilizando métodos e indizadores El atributo se especifica por nombre o por el índice de posición MiembroDescripción [int]GetAttribute(int)Indizador y método alternativo que recupera el valor de un atributo a partir de su índice [String]GetAttribute(String)Indizador y método alternativo que recupera el valor de un atributo a partir de su nombre [String, String]GetAttribute(String, String)Indizador y método alternativo que recupera el valor de un atributo en un espacio de nombres especificado por su nombre

23 Acceso al nodo atributo Soporte para acceder a los atributos como nodos independientes Permite acceder a la información del nodo atributo mediante las propiedades vistas MétodoComentarios MoveToFirstAttibuteMueve el cursor al primer atributo, que se convierte en el nodo actual y devuelve true MoveToNextAttributeUna vez posicionado el cursor en un nodo attribute este método mueve el cursor al siguiente nodo atributo. MoveToAttributeMétodo sobrecargado para mover el cursor directamente al nodo indicado MoveToElementMueve el cursor de vuelta al nodo que contiene los atributos

24 Acceso a los atributos

25 Cerrar un XmlTextReader El método GetRemainder devuelve un TextReader que contiene XML restante de una fuente parcialmente analizada. La propiedad ReadState toma el valor EOF Las instancias de XmlTextReader se deben cerrar mediante el método Close, de este modo se liberan los recursos, pasando la propiedad ReadState al valor Closed.

26 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

27 XmlValidatingReader Introducción Constructor Especificar tipo de validación Eventos de validación Novedades en VS2005

28 Introducción Es una implementación concreta de XmlReader que valida una fuente XML frente a: –Definiciones de tipos de documentos (DTDs) –Especificación de esquema MSXML (XDR) –Esquemas XML como se definen en las Recomendaciones W3C (XSD) Su funcionalidad es básicamente la misma que la de XmlTextReader Incluye miembros nuevos y miembros que operan de forma distinta que en XmlTextReader

29 Constructor Se construye a partir de una instancia de XmlReader como fuente del XML XmlTextReader xmlReader = new XmlTextReader(fichero.xml); XmlValidatingReader xmlValidation = new XmlValidatingReader(xmlReader);

30 Especificar tipo de validación Mediante la propiedad ValidationType se lee y asigna el tipo de validación Debe ser asignada antes de la primera operación de lectura o se producirá una excepción ValorComentarios AutoValida en base a un DTD o esquema de información que encuentra el analizador sintáctico DTDValida en base a un DTD NoneNo valida. Ventaja: Las referencias a entidad general se pueden resolver y se notifican los atributos predeterminados SchemaValida en base a un esquema XSD XDRValida en base a un esquema XDR

31 Eventos de validación Si se producen errores de validación al analizar el documento XML, se lanza una excepción y el análisis del nodo actual se detiene El análisis sintáctico no se puede reanudar con se produce un error El miembro ValidationEventHandler permite especificar un delegado para manejar los errores de validación Los argumentos del delegado proporcionan acceso a la información de gravedad del error de validación Permite que el programador determine si continuar o detener el análisis sintáctico

32 Validación en VS2005 Crear un conjunto de esquemas a partir de la clase XmlSchemaSet Añadir el esquema la colección Configurar las propiedades de validación utilizando la clase XmlReaderSettings Crear el objeto XmlReader usando el método estático Create Parsear el fichero Xml

33 Validación de un fichero XML

34 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

35 Escritura de ficheros XML.NET proporciona una característica útil para simplificar la creación de XML sin utilizar DOM La clase abstracta XmlWriter define la funcionalidad para generar secuencias o archivos que contienen XML bien formado y rápido XmlTextWriter proporciona una implementación concreta de esta funcionalidad Proporciona tres constructores, cuyos argumentos identifican el destino en el que se debe escribir, así como la codificación a utilizar.

36 Escritura de ficheros XML La propiedad WriteState devuelve un valor de la enumeración WriteState que indica el estado actual del escritor ValorComentarios AttributeEsta escribiendo actualmente en un valor de atributo ClosedSe ha invocado al método Close ContentEsta escribiendo actualmente el contenido de un elemento ElementEsta escribiendo actualmente la etiqueta de un elemento PrologEsta escribiendo actualemente el prólogo XML StartEsta en el estado inicial. Todavía no se ha invocado ningún método de escritura

37 Escritura de ficheros XML XmlTextWriter proporciona cuatro propiedades que permiten controlar el sangrado de la salida XML, así como el símbolo de entrecomillado PropiedadComentarios FormattingControla como se formatea la salida: Idented o None IdentationNumero de caracteres que se utilizan para sangrar cada nivel de la jerarquia IdentCharCarácter para utilizar en la sangría, de forma predefinida, es un espacio QuoteCharSimbolo de entrecomillado a utilizar con los atributos: comilla simple o comilla doble

38 Escritura de un fichero XML

39 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

40 Cargar y utilizar XmlDocument El módelo DOM es una representación de tipo árbol en memoria (caché) de un documento XML y permite examinar y modificar el documento La clase XmlDocument representa el documento XML y tiene un método Load que carga el documento desde un archivo, una secuencia o un objeto XmlReader El XML se analiza y convierte en XmlDocument mediante los métodos Load y LoadXml

41 Cargar y visualizar XmlDocument

42 Guardar código Xml La clase XmlDocument permite guardar datos XML en un archivo, una secuencia o un objeto XmlWriter La clase XmlNode permite recorrer y corregir valores de los nodos en un documento XML Mediante el método Save se proporciona al objeto XmlDocument la capacidad de guardar datos XM.

43 Guardar con XmlDocument

44 Eventos desde XmlDocument Es posible controlar seis eventos de nodo: EventoComentarios NodeInsertedse produce cuando se inserta cualquier nodo perteneciente al objeto XmlDocument en otro nodo NodeRemovedse produce cuando se quita cualquier nodo perteneciente a este documento de su nodo principal NodeChangedse produce cuando se modifica el valor de la propiedad Value de cualquier nodo perteneciente a este documento NodeInserting, NodeRemoving NodeChanging se producen cuando se va a insertar, quitar o modificar cualquier nodo perteneciente a este documento

45 Validación con XmlDocument Por defecto la clase XmlDocument no valida el XML asociado con un esquema o un DTD Solamente se verifica si el XML esta bien formado Para validar el XML en DOM –Pasarle un XmlReader validado al método Load del XmlDocument –Utilizar el método Validate para validar el XML una vez cargado en el XmlDocument

46 Validación con XmlDocument XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.Schemas = sc; settings.ValidationEventHandler += new ValidationEventHandler(ValidationCall); XmlReader reader = XmlReader.Create(fichero.xml", settings); XmlDocument document = new XmlDocument(); document.Load(reader); document.Validate(ValidationCall); … XmlNode bookNode = manager); document.Validate(ValidationEventHandler, bookNode);

47 XmlNodeReactor Implementación de XmlReader que proporciona acceso de sólo lectura con cursor unidireccional hacia delante a un nodo o subárbol DOM Ofrece un único constructor Se puede utilizar para navegar un árbol DOM completo o parcial XmlDocument doc = new XmlDocument(); Doc.Load(fichero.xml); XmlNodeReactor rd = new XmlNodeReactor(doc); While(rd.Read()) { if(rd.NodeType == XmlNodeType.Element) { System.Console.WriteLine(Nodo = {0}, rd.LocalName); }

48 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

49 Navegación (XPath) Introducción IXPathNavigable XPathDocument XPathNavigator –Tipos de nodo –Navegación por nodos –Navegación por nodos de atributos y espacios de nombre –Propiedades de los nodos –Consultas –Consultas optimizadas

50 IXPathNavigable Los componentes proporcionan soporte XPath al implementar la interfaz IXPathNavigable, que define un solo método La clase XPathNavigator define miembros que permiten acceso de sólo lectura aleatorio a los datos mediante expresiones XPath XPathNavigator CreateNavigator();

51 XPathDocument Implementa IXPathNavigable y proporciona acceso de memoria sencillo y eficaz para un documento XML Optimizada para la manipulación XSLT y XPath No proporciona funcionalidad de navegación directa ni de gestión de nodos Su objetivo es proporcionar una caché XML para acceso mediante la clase XPathNavigator

52 XPathNavigator Proporciona acceso de sólo lectura al almacén de datos asociado como si fuera una jerarquía de nodos. Conceptualmente similar al modelo de objetos del documento Proporciona los medios para navegar por los nodos, obtener información de ellos y evaluar expresiones XPath frente al conjunto de nodos

53 Tipos de nodos La propiedad NodeType devuelve el tipo de nodo del nodo actual Es un valor de la enumeración XPathNodeType Solapamiento con DOM y XmlReader Valores de la enumeración RootElement AttributeNamespace TextProcessingInstruction CommentSignificantWhitespace WhitespaceAll

54 Navegación por nodos MétodoComentario MoveTo()Toma otra instancia de XPathNavigator como argumento y mueve el cursor al nodo actual del XPathNavigator dado. MoveToNext()Mueve el cursor al siguiente nodo del mismo nivel MoveToPrevious()Mueve el cursor al anterior nodo del mismo nivel MoveToFirst()Mueve el cursor al primer nodo del mismo nivel MoveToFirstChild()Mueve el cursor al primer nodo hijo del actual MoveToParent()Mueve el cursor al padre del nodo actual MoveToRoot()Mueve el cursor al nodo raíz del árbol MoveToId()Mueve el cursor a un nodo con el ID especificado

55 Navegación atributos y Namespace Los atributos y los espacios de nombres se consideran nodos No son navegables mediante los métodos vistos antes Se especifican métodos específicos para navegar por los atributos y espacios de nombres contenidos en el nodo actual Utilizando estos métodos se convierte en nodo actual el atributo o espacio de nombre, y la información queda disponible como cualquier otro nodo

56 Navegación atributos y Namespace MétodoComentario MoveToAttribute()Mueve el cursor al atributo del nodo del elemento actual que tiene el nombre especificado MoveToFirstAttribute()Mueve el cursor al primer atributo del nodo actual MoveToNextAttribute()Mueve el cursor al siguiente atributo del elemento MoveToNamespace()Mueve el cursor al namespace del nodo actual MoveToFirstNamespace()Mueve el cursor al primer namespace del nodo actual MoveToFextNamespace()Mueve el cursor al siguiente namespace del elemento MoveToParent()Devuelve el cursor al nodo del elemento padre

57 Propiedades de los nodos La información del nodo actual esta disponible mediante las propiedades de la instancia XPathNavigator Son un subconjunto de las disponibles mediante XmlReader y son: BaseURIHasAttributes HasChildren IsEmptyElementLocalName NameNamespaceURI NodeTypePrefix ValueXmlLang

58 Navegar con XPathNavigator

59 Consultas El principal beneficio del XPathNavigator es la capacidad de consultar los datos contenidos en las expresiones XPath La Expresión XPath se puede pasar como una cadena o como instancia de XPathExpression XPathExpression encapsula una expresión XPath precompilada, que se le pasa como una cadena, sus beneficios son : –Eficiencia si la expresión XPath se va a utilizar repetidamente –El método AddSort permite ordenar el conjunto de nodos seleccionados por la expresión –La propiedad ReturnType devuelve un valor de la enumeración XPathResultType que identifica qué tipo de resultado devolverá la expresión XPath encapsulada

60 Consultas Las expresiones XPath se evalúan inicialmente mediante tres métodos de XPathNavigator : –Select: Toma sólo expresiones que devuelven un conjunto de nodos y devuelven una instancia de XPathNodeIterator –Evaluate: Toma cualquier expresión XPath y devuelve un Object. El programador debe convertir este objeto en el tipo adecuado el función del tipo de resultado de la expresión XPath –Matches: Toma una expresión Xpath y devuelve un bool indicando si el nodo actual cumple la expresión

61 Consultas optimizadas XmlPathNavigator proporciona métodos optimizados que llevan a cabo consultas XPath mas rápidamente. Estos métodos no afectan a la posición del cursor MétodoComentario SelectChildren()XPathNodeIterator con los nodos hijos del nodo actual, se pueden filtrar los nodos devueltos SelectAncestors()XPathNodeIterator con los nodos antecesores del nodo actual, se pueden filtrar los nodos SelectDescendants()XPathNodeIterator con los nodos descendientes del nodo actual, se pueden filtrar los nodos IsDescendant()Toma otra instancia XPathNavigator y devuelve true si el nodo actual del XPathNavigator es descendiente del nodo actual

62 Consultas con XPathNavigator

63 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

64 Transformaciones XSL XSLT es un lenguaje para transformar documentos XML en otros documentos utilizando XPath como lenguaje de consulta

65 Transformaciones XSL Lo primero que hay que hacer es crear una instancia de XslTransform (VS2003) o XslCompiledTransform (VS2005) XslTransform myTransform = new XslTransform(); XslCompiledTransform myTransformer = new XslCompiledTransform();

66 Transformaciones XSL A continuación se utiliza el método Load de la clase para cargar una hoja de estilos XSLT (un archivo XSLT). XslTransform myTransform = new XslTransform(); myTransform.Load(test.xsl); XslCompiledTransform myTransformer = new XslCompiledTransform(); myTransformer.Load(test.xsl");

67 Transformaciones XSL.NET proporciona una serie de métodos sobrecargados que toman una gran variedad de referencias a fuentes y destinos XslTransform myTransform = new XslTransform(); myTransform.Load(test.xsl); myTransform.Transform(input.xml,output.xml); XslCompiledTransform myTransformer = new XslCompiledTransform(); myTransformer.Load(" test.xsl "); myTransformer.Transform(input.xml,output.xml);

68 Transformaciones XSL Normalmente, la fuente sería un XmlReader o un XmlDocument, y la salida sería una secuencia, un TextWriter, un XmlWriter o un XmlReader La clase XslTransform puede transformar cualquier conjunto de datos que implemente XPathNavigator y la interfaz IXPathNavigable Es posible combinar archivos XSLT para producir el formato de salida de estructura necesario (por ejemplo, XML o HTML) Los procesadores XSLT no manipulan documentos. Manipulan la estructura de los documentos

69 Transformaciones XSL

70 Índice Introducción –Integración de XML en.NET Lectura de ficheros XML –Validación de ficheros XML Escritura de ficheros XML Modelo de Objetos del Documento (DOM) Navegación por documentos XML (XPath) Transformaciones XSL Framework 2.0 vs 1.1

71 Método Create en XmlReader y XmlWriter Soporte XML estándar por defecto Soporte universal de tipos y conversión Lenguaje XQuery Seguridad Mejoras en XPathDocument (DOM) XmlSchemaSet XPathEditableNavigator, cursor actualizable Rendimiento

72 Método Create Métodos estáticos XmlReader y XmlWriter que son utilizados en las subclases XmlTextReader y XmlTextWirter Mediante estos métodos se provee una mejor y mas flexible configuración utilizando las clases XmlReaderSettings y XmlWriterSettings Provee optimizaciones internas especificas dependiendo de las configuraciones escogidas Proporciona capacidades añadidas a XmlReader y XmlWriter, como por ejemplo la capacidad de validación.

73 Soporte XML estándar Por defecto las clases XmlTextReader y XmlTextWriter no siguen la especificación XML 1.0 La clase XmlTextReader no ofrece validación con un DTD ni tampoco resuelve referencias a entidades externas Creando un XmlTextReader mediante el método estático Create podemos indicar la conformidad con XML 1.0 y la validación contra el DTD XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Auto; settings.DtdValidate = true; XmlReader reader = XmlReader.Create("books.xml", settings); while(reader.Read()) {}

74 Tipos y conversión En la v1.1 la conversión entre los tipos de un XML esquema y los tipos del CLR se realizan mediante el uso de la clase XmlConvert XmlReader reader = new XmlReader("books.xml"); Double orderTotal = 0.0; while (reader.Read()) { if (reader.IsStartElement() && reader.Name == "price") orderTotal += XmlConvert.ToDouble(reader.ReadElementString()); }

75 Tipos y conversión Sin embargo en v2 son las propias clases XmlReader, XmlWriter y XPathNavigator las que proporcionan métodos para realizar esta conversión entre tipos XmlReader reader = new XmlReader.Create("books.xml"); Double orderTotal = 0.0; while (reader.Read()) { if (reader.IsStartElement() && reader.Name == "price") orderTotal += reader.ReadValueAsDouble(); }

76 Lenguaje XQuery XQuery es un leguaje de consultas estándar, publicado por el W3C que utiliza la notación XML para definir consultas y manejar los resultados –http://www.w3.org/TR/xpath-datamodel/http://www.w3.org/TR/xpath-datamodel/ –W3C Candidate Recommendation 3 November 2005 Provee mecanismos para extraer información de bases de datos XML nativas, así como de otro tipo de orígenes de datos (como ser bases de datos relacionales) Entre otras cosas, permite la posibilidad de obtener datos de un archivo XML y una tabla de la base de datos relacional con una sola consulta

77 Lenguaje XQuery XQuery hace un uso intensivo de Xpath Se puede ver a XQuery como un superconjunto de XPath

78 Seguridad Capacidad de tratar el XML con los mismo privilegios de seguridad que en el código aplicando Code Access Security (CAS) Capacidad de prohibir el parseo de un DTD cuando se carga un documento XML –La especificación XML 1.0 permite construir DTDs con la capacidad de realizar ataques de denegación de servicio –Mediante la propiedad ProhibitDtd del XmlReaderSettings podemos hacer que se lance una excepción cuando se encuentre contenido DTD en un documento XML

79 Mejoras XPathDocument (DOM) La v2 proporciona las siguientes mejoras al XPathDocument –Capacidad para usar la clase XmlWriter para escribir contenido –Posibilidad de validar contra un esquema por nodos –Soporte para un cursor actualizable y con acceso aleatorio –Soporte para eventos por niveles de nodos –Capacidad para aceptar o rechazar cambios de a través de un documento –Capacidad de cargar y salvar XML desde ficheros, streams y URLs

80 XmlSchemaSet XmlSchemaCollectionXmlSchemaSet Soporta SDR y Esquemas XML W3CSolo Esquemas XML W3C Los esquemas son compilados cuando se añaden con el método Add No son compilados cando se añaden. Esto proporciona una mejora del funcionamiento durante la creación de la biblioteca del esquema Cada esquema genera una versión compilada aislada, de modo que cada versión incluye todas las importaciones Al compilar se genera un solo esquema lógico, por lo tanto todos los tipos están disponibles para todos los esquemas Solo se puede añadir un esquema por cada espacio de nombres Multiples esquemas para el mismo espacio de nombres

81 XPathEditableNavigator Mediante XPathEditableNavigator podemos modificar el valor de los nodos según navegamos por el documento XML XPathDocument doc = new XPathDocument("books.xml"); foreach (XPathEditableNavigator node in doc.SelectNodes("//precio")) { Double precio = node.ValueAsDouble; node.SetValue(precio * 1.1); }

82 Rendimiento

83 Próximas Acciones 08/03/2006: ADO.NET 2.0 Datasets y XML 09/03/2006: Creación de aplicaciones Web seguras 10/03/2006: Desarrollo de código seguro y criptografía 03/04/2006: Publicación de datos con ASP.NET /04/2006: Desarrollo de Web Parts 05/04/2006: Trabajo en red y acceso remoto 06/04/2006: Tools for Office 07/04/2006: Team System

84 Boletín quincenal TechNews

85 Contactos Informática 64 –http://www.informatica64.comhttp://www.informatica64.com – Profesor


Descargar ppt "Visual Studio 2005 XML en Framework.NET 2.0 Código: HOL-VS511 Alejandro Martín Bailón"

Presentaciones similares


Anuncios Google