Tema03_1 - Servicios Web (Metadatos, XML, DOM)
-
Upload
anonymous-xn5jdy0 -
Category
Documents
-
view
14 -
download
0
description
Transcript of Tema03_1 - Servicios Web (Metadatos, XML, DOM)
-
Servicios Telemticos Avanzados. Tema 3-2 1
TEMA 3
Servicios Web (2)
Eduardo Martnez Graci
Humberto Martnez Barber
-
Servicios Telemticos Avanzados. Tema 3-2 2
Metadatos
Definicin: datos sobre datos
Fichero: una ficha por librocon la siguiente informacin: Ttulo del libro Autor Localizacin en las estanteras ...
Libro: datos sobre los que sedescriben cosas
-
Servicios Telemticos Avanzados. Tema 3-2 3
Metadatos
Se pueden considerar como etiquetas asignadas a datos,de la forma nombre = valor Autor = Miguel de Cervantes
Ttulo = Novelas ejemplares
Localizacin = 1 D 3
Para que sea de utilidad, cada etiqueta debeestar bien definida (nombre, descripcin, valores posibles)
El conjunto de etiquetas se denomina esquema.Habitualmente, etiqueta y marca son sinnimos.
-
Servicios Telemticos Avanzados. Tema 3-2 4
Lenguajes de marcas
Los documentos electrnicos tienen 3 partes: Contenido: los datos o palabras en s mismos
Estructura: la organizacin del contenido
Presentacin: el aspecto con el que se presenta el contenido al lector
Las marcas son secuencias de smbolos que, insertados en elcontenido de un documento, sirven para indicar su presentacin o suestructura
HTML (Hypertext Markup Language): Las marcas definen la presentacin
Problema: los buscadores no disponen deinformacin til para localizar los documentossolicitados
-
Servicios Telemticos Avanzados. Tema 3-2 5
XML: eXtended Markup Language
FacturaDe: Pepe MartinezA: Juan FernandezFecha: 1 Dic 2000Cantidad: 1000 PtsIva: 17%Total: 1170 Pts
: Cabecera tipo 1: Nuevo prrafo
Pepe MartinezJuan Fernandez
1000171170
: comienza la informacin de factura ... : Quin cre la factura
Con HTML: Con XML: las marcas indican la estructura
Las bsquedas son ms precisas con XML
-
Servicios Telemticos Avanzados. Tema 3-2 6
Origen XML
Hacia finales de los sesenta, un grupo de investigadorescomenz a interesarse por darle otros usos a losdocumentos electrnicos. En particular, IBM pidi a CharlesGoldfarb que construyese un sistema para almacenar,buscar, gestionar y publicar documentos legales.
El resultado de su trabajo fue el lenguaje SGML (StandardGeneralized Markup Language), actualmente el estndar dela ISO 8879. XML es un subconjunto de SGML pensadopara ser llevado al web.
-
Servicios Telemticos Avanzados. Tema 3-2 7
Documentos estructurados
Goldfarb y otros investigadores de IBM reconocieron tres hechosimportantes:! Para intercambiar informacin, los programas tienen que soportar un
lenguaje comn. Tiene sentido que ese lenguaje comn sea algn tipo delenguaje de marcas.
La estructura de un documento se puede ver como una jerarqua deelementos. Por ejemplo, una carta puede tener, en un primer nivel, unelemento "encabezado" y otro "cuerpo". El encabezado puede contener, a suvez, elementos "destinatario", "asunto", etc. Las marcas que delimitan estoselementos se denominan marcas estructurales generalizadas (structuralgeneralized markup).
Los documentos tienen que seguir algn tipo de reglas, es decir, el lenguajede marcas debera ser especificado de algn modo formal que permitiesegarantizar que el documento cumple cierta estructura.
-
Servicios Telemticos Avanzados. Tema 3-2 8
Separacin contenido/presentacin
Una vez que se tiene definido un tipo de documento, es necesariodefinir cmo se va a imprimir o a visualizar en una pantalla. Estadescripcin se recoge en una hoja de estilo. !
La idea central de la solucin propuesta por Goldfarb es quemantener separados los tres aspectos de un documento, contenido,estructura, y presentacin, aporta grandes ventajas: Permite al navegador hacer el trabajo de presentacin de los datos en la
pantalla Facilita al navegador la manipulacin de los datos, y la realizacin de
clculos a partir de ellos Se pueden realizar bsquedas "inteligentes" de informacin. Fomenta la creacin de vocabularios (marcas) estndar en diferentes
dominios, como los bancos, las telecomunicaciones, el transporte, etc.
-
Servicios Telemticos Avanzados. Tema 3-2 9
XML bsico
La siguiente figura muestra los elementos bsicos de unsistema basado en XML:
documentoXML
Definicin deTipo de
Documento
Parser XML Aplicacin XML
-
Servicios Telemticos Avanzados. Tema 3-2 10
Detalles sintcticos
Los documentos XML estn compuestos por caracteres del conjuntoUnicode. Cualquier secuencia de caracteres se denomina string. Lasintaxis de XML describe la forma de combinar strings para creardocumentos XML bien formados.! XML distingue maysculas y minsculas, y por tanto no es lo mismo
"ELEMENT" que "element".
Las marcas se parecen a las de HTML. Empiezan por '
-
Servicios Telemticos Avanzados. Tema 3-2 11
Prlogo de un documento XML
Los documentos XML estn divididos en dos partes principales: unprlogo y una instancia de documento.
El prlogo est compuesto de una declaracin XML y una declaracinde tipo de documento, y ambas son opcionales. Este es un ejemplo:!
!
Este prlogo dice que el documento se ajusta a XML versin 1.0, y esuna instancia de un determinado tipo de documento, DOCBOOK.
-
Servicios Telemticos Avanzados. Tema 3-2 12
Contenido de un documento XML
El contenido real del documento XML se encuentra en la instancia deldocumento. Este es un ejemplo de documento XML:!
Eduardo [email protected]
Humberto [email protected]
Ejemplo de Memo
Humberto, te aseguro que no quera
usar el ejemplo tpico de Memo, pero no se me ocurra otra cosa.
prlogo
instancia dedocumento
-
Servicios Telemticos Avanzados. Tema 3-2 13
rbol sintctico
Parser XML: genera el rbol sintctico
memo from name: Eduardo...
email: edumart@...
to name: Humberto...
email: humberto@...
subject: Ejemplo de...
body paragraph: Humberto...
-
Servicios Telemticos Avanzados. Tema 3-2 14
Elementos y atributos XML (1)
Los elementos XML se dividen en dos categoras: los quetienen contenido y los que son vacos. Ejemplo de elementocon contenido:!
Este es el ttulo!
Los elementos XML sin contenido, o elementos vacos,tienen este aspecto:!
Los atributos son una forma de adjuntar caractersticas opropiedades a los elementos de un documento. Los atributostienen nombre y valor.
-
Servicios Telemticos Avanzados. Tema 3-2 15
Elementos y atributos XML (2)
A veces, un elemento con subelementos puede ser modelado deforma equivalente con un elemento vaco con atributos. Acontinuacin se dan tres formas de modelar un elemento persona deun mensaje de correo:
!
Eduardo Martinez
Eduardo Martinez
-
Servicios Telemticos Avanzados. Tema 3-2 16
CDATA y comentarios
A veces puede resultar interesante indicarle al analizador XML que nointente interpretar una porcin de documento. Esto se hace marcandola seccin de la siguiente manera:!
! De esta forma, es posible incluir contenido que tiene caracteres
empleados por XML para establecer el comienzo de las marcas:!
Esto es un ejemplo de HTML dentro de XML
Los prrafos se indican con esta marca
]]>!
Comentarios similares a HTML:!
-
Servicios Telemticos Avanzados. Tema 3-2 17
Document Type Definition (DTD)
Documento bien formado: documento que cumple las reglassintcticas de XML.
Es interesante definir los tipos de elementos permitidos, atributos yentidades, y puede expresar restricciones sobre sus combinacionesvlidas: se consigue con DTDs
Documento vlido: documento que declara en su prlogo ciertoDTD, y que efectivamente lo cumple.
Documento no vlido: documento que declara en su prlogo ciertoDTD, y que no lo cumple.
Un documento no vlido puede ser bien formado
Un documento bien formado puede no ser vlido ni no vlido
-
Servicios Telemticos Avanzados. Tema 3-2 18
DTD interno: definido dentro del mismo fichero que eldocumento XML
]>
Rock N. RobynJay Bird StreetBaltimoreMDUSA43214
-
Servicios Telemticos Avanzados. Tema 3-2 19
DTD externo: contenido en otro fichero
Si se indica "SYSTEM", a continuacin aparece una URLque localiza el fichero que contiene la DTD.
...
Si se emplea "PUBLIC", se hace referencia a la DTD externamediante un identificador pblico nico:!
...
-
Servicios Telemticos Avanzados. Tema 3-2 20
Definicin de elementos XML
Los elementos son la base del lenguaje XML. Cadaelemento de un documento XML vlido debe conformar conun tipo de elemento declarado en el DTD.
Las declaraciones de tipos de elementos deben comenzarcon el string "
-
Servicios Telemticos Avanzados. Tema 3-2 21
Especificacin de contenido de elementos (1)
EMPTY: indica que un elemento no puede tener contenido, como laetiqueta IMG de HTML:
!
ANY: el elemento puede contener cualquier tipo de sub-elemento odatos (string de caracteres). Un elemento con la especificacin decontenido ANY es completamente no estructurado.
-
Servicios Telemticos Avanzados. Tema 3-2 22
Especificacin de contenido de elementos (2)
#PCDATA se refiere a cualquier secuencia de caracteres que nocontiene elementos.
Contenido mixto: si deseamos que el contenido de un elemento estformado por cierta combinacin estructurada de datos y sub-elementos, es necesario emplear expresiones regulares (*, +, ?) paradescribir la sintaxis de dicho contenido:
!
-
Servicios Telemticos Avanzados. Tema 3-2 23
Expresiones regulares
Permiten definir una gramtica de forma recursiva Las expresiones regulares ms sencillas son:
(#PCDATA) : caracteres (elemento): el contenido es una y slo una aparicin de elemento
Expresiones regulares que indican cardinalidad: (ER?) : contenido opcional, es decir, vaco o cualquier contenido descrito con la expresin
regular ER. (ER*): contenido con cardinalidad mxima no definida y mnima posiblemente 0 (ER+): contenido con cardinalidad mxima no definida y mnima 1
Expresin regular que indica una opcin: (ER1 | ER2): contenido que puede ser cualquiera de los descritos por ER1 y los descritos por
ER2
Expresin regular que indica secuencia: (ER1, ER2, ER3, ...): contenido formado por la secuencia del contenido descrito por ER1,
seguido por el descrito por ER2, ...
-
Servicios Telemticos Avanzados. Tema 3-2 24
Atributos (1)
Otra forma de aadir informacin a un elemento es definiendoatributos. La principal diferencia entre los atributos y el contenido deun elemento no vaco es que el valor de los primeros no puedecontener sub-elementos. !
Los atributos se declaran para tipos de elementos especficos:!
Las declaraciones de atributos empiezan con el string "
-
Servicios Telemticos Avanzados. Tema 3-2 25
Atributos (2)
Los atributos pueden tener valores por defecto:!
Los atributos pueden declararse de forma que sus valorescumplan ciertas restricciones de tipo lxico o semntico. CDATA: significa "character data". El contenido es cualquier
secuencia de caracteres que no contenga otros elementos.
Enumerados: se emplea cuando un atributo debe tomar un valordentro de un conjunto discreto:
-
Servicios Telemticos Avanzados. Tema 3-2 26
Atributos (3)
!ID e IDREF: permite crear referencias cruzadas entreelementos.
...
...
...Vea para volver aleer sobre
...
-
Servicios Telemticos Avanzados. Tema 3-2 27
Atributos (4)
ENTITY: tipo de los atributos cuyo valor es el nombrede una entidad.!
...
...
...
-
Servicios Telemticos Avanzados. Tema 3-2 28
Entidades (1)
Son abreviaturas que representan un valor (su contenido).
Pueden ser: Internas: su valor est indicado en el mismo DTD en el que se declaran.
Externas: su valor est en documentos externos al DTD en el que sedeclaran.
Generales: se emplean en DTDs y en documentos XML
Parmetro: slo se emplean en DTDs
Las entidades generales internas son las ms simples. Una entidadde este tipo es siempre una entidad analizada por el procesador XML.
-
Servicios Telemticos Avanzados. Tema 3-2 29
Entidades (2)
Ejemplo de declaracin de entidad general interna:
]>
&xml;
Ejemplo de declaracin de entidad general externa:!
-
Servicios Telemticos Avanzados. Tema 3-2 30
Entidades (3)
Una referencia a una entidad es un string formado por el smbolo '&'concatenado con el nombre de la entidad.
El procesador XML se encarga de sustituir la referencia por sucontenido, que es automticamente analizado por el procesador, queasume que contiene texto XML.
Mediante entidades es posible dividir un documento en mltiplesficheros, lo cual favorece la reutilizacin y el mantenimiento dedocumentos de gran tamao.
Si queremos incluir en un documento una entidad que no es XML,debemos emplear el string 'NDATA' seguido de un identificador queindica el tipo de notacin de la entidad.
-
Servicios Telemticos Avanzados. Tema 3-2 31
Entidades (4)
Las entidades parmetro slo pueden aparecer en DTDs. La formade distinguirlas de las entidades generales es mediante un smbolo'%' en su declaracin, y una sintaxis diferente en su uso.
!
%entidad-ejemplo;
]>
...
-
Servicios Telemticos Avanzados. Tema 3-2 32
Espacios de nombres Los vocabularios de marcas se deben reutilizar
Un mismo documento puede usar varios vocabularios de marcas Posibilidad de colisin entre nombres de elementos y atributos
Solucin: nombres universales
Definicin: un espacio de nombres XML es una coleccin de nombres, identificada con unareferencia URI, que se emplean en documentos XML como nombres de elementos y nombres deatributos.
Definicin: dos referencias URI que identifican espacios de nombres se consideran idnticas sison iguales carcter a carcter.
Los nombres de elementos y atributos aparecen cualificados:
prefijo:parte_local
El prefijo corresponde a una referencia URI, que identifica el espacio de nombres
-
Servicios Telemticos Avanzados. Tema 3-2 33
Declaracin de espacios de nombres
El espacio de nombres se declara con un atributo especial de un elemento XML: El atributo de la forma xmlns:NCName=URI, declara que el elemento en el que aparece
pertenece al espacio de nombres URI, y se usa el prefijo NCName para cualificar losnombres de elementos y atributos
Un elemento puede tener varias declaraciones de espacios de nombres. Ejemplo: espacio de nombres http://ecommerce.org/schema con prefijo edi
... ...
-
Servicios Telemticos Avanzados. Tema 3-2 34
Declaracin de espacios de nombres (2)
Espacio de nombres por defecto: espacio de nombres declarado sin prefijo.Por defecto se considera que cualquier nombre sin prefijo pertenece a dichoespacio de nombres. Ejemplo:
Manual de XML
1234566789
-
Servicios Telemticos Avanzados. Tema 3-2 35
Hojas de estilo
XML no predefine la apariencia de los elementos. Se requiere una descripcinaparte mediante una hoja de estilo.
XSL (eXtensible Stylesheet Language) es un lenguaje basado en XML,estandarizado por el W3C, para expresar hojas de estilo aplicables adocumentos XML. Est formado por tres partes: XSLT (eXtensible Stylesheet Transformations): lenguaje para especificar transformaciones
de documentos XML
XPath (XML Path Language): lenguaje para crear patrones para identificar elementos XMLsobre los que aplicar transformaciones
Formating Objects: vocabulario XML de objetos de formateo, que describen de maneraindependiente el estilo a aplicar
-
Servicios Telemticos Avanzados. Tema 3-2 36
Uso de XSL
documentoXML
hoja de estiloXSL
documentoRTF
ProcesadorXSL
ProcesadorXSL
ProcesadorXSL
documentoPDF
documentoHTML
El lenguaje XSL sepuede usar para:
Representar documentosXML en diferentesformatos
Extraer parte delcontenido de undocumento XML
Transformardocumentos XML entreesquemas
-
Servicios Telemticos Avanzados. Tema 3-2 37
Hojas de estilo y documentos XML
Un documento XML que quiera emplear cierta hoja de estilo debe indicar sulocalizacin mediante la siguiente instruccin en el prlogo:
!
Se pueden usar: En el visualizador: IExplorer 5 soporta el uso de hojas de estilo en documentos XML
En el servidor de contenidos: Cocoon es un sistema de publicacin de documentos basadoen XML y XSL.
-
Servicios Telemticos Avanzados. Tema 3-2 38
Objetos de formato
Es un conjunto muy extenso de elementos y atributos querepresentan reas del documento de salida.
Son especialmente tiles para convertir datos XML de tipotexto en representaciones binarias (como PDF).
Java y XML
Lo habitual es emplear etiquetas XHTML para definir elformato de los elementos XML (IExplorer no soporta objetosde formato)
-
Servicios Telemticos Avanzados. Tema 3-2 39
Ejemplo
Extracto de la hoja de estilo: Extracto del documento XML:
Sue Meyer Cocina italiana
Resultado HTML:Carlos Urruti: Cocina rpidaCarmen Lpez: 101 RecetasSue Meyer: Cocina italiana
-
Servicios Telemticos Avanzados. Tema 3-2 40
Procesamiento de Documentos XML
Una aplicacin que procese documentos XML debe analizarlos. Elanlisis se realiza usando libreras que implementan los analizadores.
Existen dos tipos de analizadores XML: Analizadores simples, comprueban que los documentos XML son documentos bien
formados. Analizadores de validacin, comprueban que los documentos son bien formados y
vlidos XML de acuerdo a DTDs o esquemas.
Otra clasificacin de los analizadores es la siguiente: Analizadores que tratan el documento como estructura plana (secuencialmente): el
programador escribe los procedimientos a ejecutar durante el anlisis: etiqueta deapertura, etiqueta de cierre, etc.
Analizadores que general un rbol de anlisis. El programador recorre el rbol y consultalas propiedades de los nodos, que representan elementos XML.
Segundo tipo ms prctico, pero ms lento. Adems, los documentosgrandes pueden requerir excesiva memoria para generar el rbol.
-
Servicios Telemticos Avanzados. Tema 3-2 41
SAX: Simple API for XML
SAX es una API estndar para el anlisis de documentos XML. Apache Xercesincluye varias clases para emplearla.
El anlizador SAX trata de forma secuencial a los documentos XML, e invoca acdigo escrito por el programador cuando se producen eventos importantes amedida que recorre el documento.
El programador registra handlers en el parser SAX. Un handler es un mtodoescrito por el programador, cuya signatura est definida en un interfaz SAX, yque es invocado por el parser SAX al producirse cierto evento.
Existen cuatro interfaces de handlers: org.xml.sax.ContentHandler: eventos estndares relacionados con los datos. org.xml.sax.ErrorHandler: eventos que notifican errores de anlisis. org.xml.sax.DTDHandler: eventos de anlisis de DTDs. org.xml.sax.EntityResolver: eventos para resolver entidades externas en documentos XML.
El parser SAX ofrece mtodos setContentHandler(), setErrorHandler()... pararegistrar clases que implementan los interfaces anteriores.
-
Servicios Telemticos Avanzados. Tema 3-2 42
Creacin de parser SAX (1)import java.io.IOException;import org.xml.sax.SAXException;import org.xml.sax.Attributes;import org.xml.sax.Locator;import org.xml.sax.XMLReader;import org.xml.sax.ContentHandler;import org.xml.sax.ErrorHandler;import org.apache.xerces.parsers.SAXParser;...public void performDemo(String uri) {
System.out.println("Parsing XML File:" + uri );ContentHandler contentHandler = new MyContentHandler();ErrorHandler errorHandler = new MyErrorHandler();try {XMLReader parser = new SAXParser();parser.setContentHandler(contentHandler);parser.setErrorHandler(errorHandler);
parser.parse(uri);} catch (IOException e) {
System.out.println("Error reading URI:" + e.getMessage());} catch (SAXException e) {
System.out.println("Error in parsing: " + e.getMessage());
}}
-
Servicios Telemticos Avanzados. Tema 3-2 43
Creacin de parser SAX (2)class MyContentHandler implements ContentHandler {
private Locator locator;
public void setDocumentLocator(Locator locator) {// Locator tiene los mtodos
// getLineNumber() y getColumnNumber() this.locator = locator; }
public void startDocument() throws SAXException { System.out.println("Parsing begins..."); }
public void endDocument() throws SAXException { System.out.println("....Parsing ends."); }
public void processingInstruction(String target, String data) throws SAXException { System.out.println("PI: Target:" + target + " and Data: " + data); }
-
Servicios Telemticos Avanzados. Tema 3-2 44
Creacin de parser SAX (3) public void startPrefixMapping(String prefix, String uri) { System.out.println("Mapping starts for prefix " +prefix + " mapped to URI " + uri); }
public void endPrefixMapping(String prefix) { System.out.println("Mapping ends for prefix " +prefix); }
public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException{ System.out.print("startElement: " + localName); if (!namespaceURI.equals("")) { System.out.println(" in namespace "+ namespaceURI + " (" + rawName + ")"); } else { System.out.println(" has no associated namespace"); } for (int i = 0; i < atts.getLength(); i++) System.out.println(" Attribute: " + atts.getLocalName(i)+ "=" + atts.getValue(i)); }
-
Servicios Telemticos Avanzados. Tema 3-2 45
Creacin de parser SAX (4)
public void endElement(String namespaceURI, String localName, String rawName) throws SAXException { System.out.println("endElement: " + localName + "\n"); }
public void characters(char[] ch, int start, int end) throws SAXException { String s = new String(ch, start, end); System.out.println("characters: " + s); }
public void ignorableWhitespace(char[] ch, int start, int end) throws SAXException { }
public void skippedEntity(String name) throws SAXException { }}
-
Servicios Telemticos Avanzados. Tema 3-2 46
Creacin de parser SAX (5)
class MyErrorHandler implements ErrorHandler { public void warning (SAXParseException exception) throws SAXException { System.out.println("**Parsing Warning**\n" + "Line: " +
exception.getLineNumber() + "\n" + "URI: " + exception.getSystemId() + "\n" + "Message: " + exception.getMessage());
throw new SAXException("Warning encountered"); }
public void error (SAXParseException exception) throws SAXException { // Errores de validacin System.out.println("**Parsing Error**\n" + "Line: " +
exception.getLineNumber() + "\n" + "URI: " + exception.getSystemId() + "\n" + "Message: " + exception.getMessage());
throw new SAXException("Error encountered"); }
-
Servicios Telemticos Avanzados. Tema 3-2 47
Creacin de parser SAX (6)
public void fatalError (SAXParseException exception) throws SAXException { // Errores de XML mal formado System.out.println("**Parsing Fatal Error**\n" + "Line: " +
exception.getLineNumber() + "\n" + "URI: " + exception.getSystemId() + "\n" + "Message: " + exception.getMessage());
throw new SAXException("Fatal Error encountered"); }}
-
Servicios Telemticos Avanzados. Tema 3-2 48
Configuracin del parser
SAX 2.0 incorpora un mecanismo estndar y extensible para la configuracin decaractersticas de un parser XML (dada la continua evolucin de XML)
La configuracin se realiza con el mtodo setFeature("[URI]", true) del interfazXMLReader.
URI es el identificador que representa la caracterstica que se est configurando.SAX 2.0 define las siguientes:
Namespace Processing: http://xml.org/sax/features/namespaces. Activa o desactiva elprocesamiento de namespaces (startPrefixMapping, endPrefixMapping, y ciertos parmetros destartElement y endElement).
Validacin: http://xml.org/sax/features/validation. Activa o desactiva la validacin (y por tanto lasllamadas al interfaz ErrorHandler)
Procesamiento de entidades externas generales:o http://xml.org/sax/features/external-general-entities
Procesamiento de entidades externas parmetroo http://xml.org/sax/features/external-parameter-entities
Los parsers pueden definir sus propios URIs de configuracin: Validacin con esquemas: http://xml.apache.org/xerces2-j/features.html
-
Servicios Telemticos Avanzados. Tema 3-2 49
DOM: Document Object Model
DOM es una especificacin del W3C (a diferencia de SAX) independiente de la plataforma quedefine una serie de interfaces basados en objetos que permiten crear programas y scripts queaccedan y actualicen al contenido, la estructura y la presentacin de los documentos.
Existen "bindings" de DOM a diversos lenguajes de programacin, entre ellos Java. En Java, losprogramadores emplean libreras que implementan el paquete org.w3c.dom
El resultado del anlisis es un org.w3c.dom.Document, un objeto que representa un rbol deanlisis del documento. Por tanto, hasta que no finaliza el anlisis no puede comenzar elprocesamiento:
public void performDemo(String uri) {DOMParser parser = new DOMParser();
try {parser.parse(uri);org.w3c.dom.Document doc = parser.getDocument();// Procesamiento
} catch (Exception e) { ... } }
-
Servicios Telemticos Avanzados. Tema 3-2 50
Uso de un rbol DOM
Los nodos de un rbol DOM pueden ser de diversos tipos, de acuerdo a lajerarqua de interfaces del paquete org.w3c.dom
Document
DocumentFragment
DocumentType
ProcessingInstruction
CharacterData
Element
Attr
EntityReference
Entity
Notation
Node
Comment
Text
CDATASection
Determinar el tipo de un nodo:
Node node;...switch (node.getNodeType()) {case Node.DOCUMENT_NODE:// Objeto DocumentDocument doc =(Document)node;break;case Node.ELEMENT_NODE:// Objeto ElementElement e = (Element)node;break;case Node.TEXT_NODE:// Objeto TextText t = (Text)node;break;... }
-
Servicios Telemticos Avanzados. Tema 3-2 51
Impresin del rbol de anlisis (1)public void performDemo(String uri) {
System.out.println("Parsing XML File: " + uri);DomParser parser = new DOMParser();try { parser.parse(uri);
Document doc = parser.getDocument();printNode(doc, "");
} catch (IOException e) {System.out.println("Error reading URI: " + e.getMessage());
} catch (SAXException e) {System.out.println("Error in parsing: " + e.getMessage());
} }public void printNode(Node node, String indent) { switch(node.getNodeType()) { case Node.DOCUMENT_NODE:
System.out.println("\n"); Document doc = (Document)node; DocumentType docType = doc.getDoctype(); System.out.print(""); printNode(doc.getDocumentElement(), ""); break;
-
Servicios Telemticos Avanzados. Tema 3-2 52
Impresin del rbol de anlisis (2)case Node.ELEMENT_NODE: String name = node.getNodeName(); System.out.print(ident + ""); NodeList children = node.getChildNodes();
// Recursividad por cada hijo if (children != null) { for (int i = 0; i < children.getLength(); i++) {
printNode(children.item(i), ident + " "); } } System.out.println(ident + ""); break;case Node.TEXT_NODE:case Node.CDATA_SECTION_NODE: System.out.print(node.getNodeValue()); break; } }
-
Servicios Telemticos Avanzados. Tema 3-2 53
Generacin de documentos XMLimport org.apache.xerces.dom.DOMImplementationImpl;import org.w3c.dom.*;
// construyo el documentoDOMImplementation domImpl = new DOMImplementationImpl();
Document doc = domImpl.createDocument(uri_nombres, "respuestaPerfil", null);
// RaizElement _root = doc.getDocumentElement();
_root.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", uri_nombres + " " + url_esquema);
Element _id = doc.createElementNS(uri_nombres, "id");_id.appendChild(doc.createTextNode(cod_propio));_root.appendChild(_id);
Element _nombre = doc.createElementNS(uri_nombres, "nombre");_nombre.appendChild(doc.createTextNode(nombre));_root.appendChild(_nombre);