Documente Academic
Documente Profesional
Documente Cultură
Para extraer la informacin que contiene un documento XML, se podra escribir cdigo para analizar el contenido del archivo XML (archivo de texto) Utilizar un parser de XML, compatible con el modelo de objeto de documento (DOM) de XML.
Desaprovechara una de las ventajas de XML: el ser una forma estructurada de representar datos
DOM define una interfaz estndar para facilitar el acceso al contenido de los documentos XML
Caractersticas DOM
Documento se carga totalmente en memoria en una estructura de rbol
Implementaciones
Los navegadores implementaron DOM propietarios para HTML compartiendo el que defina ECMAScript pero siendo incompatibles entre s Los DOM propietarios eran incompletos Un buen DOM debe ser completo: Permitir (re)construir un documento completo desde el modelo Acceder a cualquier parte de un documento original
El DOM W3C permite acceder a todas las partes de un documento. Existen tres niveles de DOM:
Nivel 0: es una formalizacin del DOM HTML definido implcitamente por JavaScript. Nivel 1: permite acceder a todas las partes de un documento XML pero no a la DTD ni a las hojas de estilo. Nivel 2: permite acceso a la DTD, hojas de estilo y espacios de nombres.
El DOM pretende constituir un API que pueda ser utilizado por distintas aplicaciones
Conceptos bsicos
Analizador DOM: Crea una estructura de tipo rbol Manipulacin del rbol. Objetos W3C DOM:
Element un elemento XML Attribute un attributo Text texto contenido en un elemento o atributo CDATAsection seccin CDATA ProcessingInstruction Una instruccin de procesamiento Comment Contenido de un comentario de XML Document El objeto documento DocumentType Referencia al elemento DOCTYPE DocumentFragment Referencia a fragmento de documento
Jerarqua de clases
Ejemplo
Document_node DOCUMENT
<DOCUMENT> TABLE <TABLE> <BODY> Element_node <TR> BODY <TD>Shady Grove</TD> <TD>Aeolian</TD> </TR> TR TR <TR> <TD>Over the River, Charlie </TD> TD TD TD TD <TD>Dorian</TD> Cdata_section_node </TR> Over </BODY> Shady Grove Aeolian theRiver, Dorian </TABLE> Charlie </DOCUMENT
DOM
DOCUMENT TABLE
doc documentElement
childNodes.item(0)
BODY TR TD
Shady Grove
getElementByTagName(titulo_tabla)
TR TD TD
TD
Aeolian
Dorian
doc.documentElement.childNodes.item(0).getElementsByTagName(titulo_tabla)
public class XML_Parser{ public static void main(String[] args){ try{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); el Se parsea dbf.setNamespaceAware(true); documento documentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File(filename)); display(doc); Se obtiene un catch (Exception e){} tipo de objeto } Document public static void display(Node node){ if (node==null) return null; int type = node.getNodeType(); Si el documento switch (type) { case Node.DOCUMENT_NODE: { no es vlido o display(((Document)node).getDocumentElement()); bien formado break;} case Node.ELEMENT_NODE: NodeList childNodes = node.getChildNodes(); if (childNodes != null) { length=childNodes.getLength(); Para cada for(i=0;i<length;i++) hijo se llama display(childNodes.item(i)); a la funcin } break;} display case Node.CDATA_SECTION_NODE: { (recursivo) // Print values break;} }}