540 likes | 726 Views
Eficiencia en el análisis de documentos XML: comportamiento en memoria. Departamento de Sistemas y Automática, Área de Telemática Universidad de Sevilla. Antonio J. Sierra 1ª Conferencia Ibérica de Sistemas y Tecnologías de la Información, CISTI 2006 Esposende, Portugal
E N D
Eficiencia en el análisis de documentos XML: comportamiento en memoria. Departamento de Sistemas y Automática, Área de Telemática Universidad de Sevilla. Antonio J. Sierra 1ª Conferencia Ibérica de Sistemas y Tecnologías de la Información, CISTI 2006 Esposende, Portugal Junio 2006.
Índice Panorámica Introducción Modelos de análisis Implementaciones Validación Conclusiones 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Panorámica Qué? Como? Donde? Porqué? Medidas (Resultados) Ficheros con estructuras J2SE Validación del modelo 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Introduction • Framework • Fundamentals • Basics 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Contexto Internet J2ME SOAP/XML Wireless acces to network Web Service XML 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
KVM Conjunto de MIDlet Aplicaciones OEM MIDP 2.0 AMS/OTA Nativo Aplicaciones Nativas Aplicaciones OEM Nativas Navegador Nativo JSR-120 WMA JSR-135 MMAPI Paquetes opcionales Clases OEM CLDC 1.0 (o 1.1) Sistema Operativo Nativo Dispositivo inalámbrico 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Fundamentals: techniques XML parsing Technique Description DOM Tree-based XML parser memory and CPU intensive Each node a piece of data keeps the whole data in memory . A DOM parser returns a “tree” representation of the XML document. Push(SAX) Event-based XML parser. Reports parsing events directly to the application. Provides a serial-access mechanism for accessing XML docum. Faster and consume less CPU A Push parser calls client’s methods with XML events. A Pull parser returns XML events to a client on request. In-situ XML parsers, as much as possible, indicate where data was found in the parsed XML document. (Data-copying XML parsers copy all the information in the parsed XML document into objects, returned to the client) Pull (StAX) FCM 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
<?xml version="1.0" ?> <catalogo> <!-- Ejemplo --> <libro id="101"> <titulo>The XML handbook</titulo> <autor>C.F. Golfarb,P. Prescod</autor> <precio>39.95</precio> </libro> <libro id="121"> <titulo>XSLT Programmer's Ref.</titulo> <autor>M.Kay</autor> <precio>19.95</precio> </libro> </catalogo> Informacióndatos 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
<?xml version="1.0" ?> <catalogo> <!-- Ejemplo --> <libro id="101"> <titulo>The XML handbook</titulo> <autor>C.F. Golfarb,P. Prescod</autor> <precio>39.95</precio> </libro> <libro id="121"> <titulo>XSLT Programmer's Ref.</titulo> <autor>M.Kay</autor> <precio>19.95</precio> </libro> </catalogo> metainformaciónmetadatos 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Sam Wilmott • La forma en la que los datos son devueltos (API) • Qué información es devuelta al cliente • La relación entre el analizador y el cliente (Productor/Consumidor) 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Sperberg-Mcqueen • Como un flujo de caracteres • Como una secuencia de caracteres de datos mezclado con marcas • Como un árbol en su forma obvia • Como un grafo con enlaces entre nodos • Definidos por relaciones entre padre-hijo y los elementos XML, por enlaces ID/IDREF, o por métodos de aplicación específicas entre elementos) • Como un árbol o grafo con información del tipo de datos y validez • Como una instancia de la estructura de datos de una aplicación 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
<?xml version="1.0" ?> <catalogo> <!-- Ejemplo --> <libro id="101"> <titulo>The XML handbook</titulo> <autor>C.F. Golfarb,P. Prescod</autor> <precio>39.95</precio> </libro> <libro id="121"> <titulo>XSLT Programmer's Ref.</titulo> <autor>M.Kay</autor> <precio>19.95</precio> </libro> </catalogo> Ejemplo (II) , titulo: “The XML handbook” libro autor:“C.F. Golfarb,P. Prescod ” precio: “39.95 ” id:101 catalogo titulo:“XSLT Programmers’s Ref.” libro autor: “M. Kay ” id:121 precio: “19.95 ” Comentario: Ejemplo Reglas: – jerarquía, – unicidad, – entrelazado, … 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
<?xml version="1.0" ?> <catalogo> <!-- Ejemplo --> <libro id="101"> <titulo>The XML handbook</titulo> <autor>C.F. Golfarb,P. Prescod</autor> <precio>39.95</precio> </libro> <libro id="121"> <titulo>XSLT Programmer's Ref.</titulo> <autor>M.Kay</autor> <precio>19.95</precio> </libro> </catalogo> Ejemplo (y III) titulo: “The XML handbook” libro autor:“C.F. Golfarb,P. Prescod ” precio: “39.95 ” id:101 catalogo titulo:“XSLT Programmers’s Ref.” libro autor: “M. Kay ” id:121 precio: “19.95 ” Comentario: Ejemplo Document DocumentType null Element catalogo Element libro Element libro Text “” Comments “Ejemplo” Attr “121” Element titulo Element autor Element precio Text “XSLT Programmers’s Ref.” Text “M. Kay ” Text “19.95 ” Attr “101” Element titulo Element autor Element precio Text “The XML handbook” Text “C.F. Golfarb,P. Prescod ” Text “39.95 ” 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
DOM (Document Object Model) • W3C (The World Wide Web Consortium) • What is the Document Object Model? • The Document Object Model is a platform- and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the presented page. This is an overview of DOM-related materials here at W3C and around the web. • Why the Document Object Model? • "Dynamic HTML" is a term used by some vendors to describe the combination of HTML, style sheets and scripts that allows documents to be animated. The W3C has received several submissions from members companies on the way in which the object model of HTML documents should be exposed to scripts. These submissions do not propose any new HTML tags or style sheet technology. The W3C DOM Activity is working hard to make sure interoperable and scripting-language neutral solutions are agreed upon. 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Funcionamiento de la API DOM DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("libros.xml"); NodeList nodes = document.getElementsByTagName("titulo"); for(int i = 0; i < nodes.getLength(); i ++) { Element titleElem = (Element)nodes.item(i); Node childNode = titleElem.getFirstChild(); if (childNode instanceof Text) { System.out.println("El titulo del libro es:" + childNode.getNodeValue()); } } Document document = builder.parse("libros.xml"); for(int i = 0; i < nodes.getLength(); i ++) { Element titleElem = (Element)nodes.item(i); Node childNode = titleElem.getFirstChild(); if (childNode instanceof Text) { System.out.println("El titulo del libro es: " + childNode.getNodeValue()); } } 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
SAX & DOM Document Handler Analizador SAX Error Handler DOM DTD Event Handler Object Entity Resolver Object Object Object Object 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Funcionamiento de SAX (y II) public static void main(String args[]){ SAXParser parser = null; DefaultHandler handler = new MiManejadorDeConenido(); SAXParserFactory factory = SAXParserFactory.newInstance(); try{ parser = factory.newSAXParser(); parser.parse(new FileInputStream("libros.xml"),handler); }catch(Throwable e){ System.out.println("Error: "+e); } } parser = factory.newSAXParser(); parser.parse(new FileInputStream("libros.xml"),handler); 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Funcionamiento de SAX (I) public class MiManejadorDeConenido extends DefaultHandler { boolean isTitle; public void startElement(String uri, String localName, String qName, Attributes atts) { if (qName.equals("titulo")) isTitle = true; } public void endElement(String uri, String localName, String qName) { if(qName.equals("titulo")) isTitle = false; } public void characters(char[ ] chars, int start, int length) { if(isTitle){ System.out.println("El titulo del libro es: " + new String(chars, start, length)); } } } public void startElement(String uri, String localName, String qName, Attributes atts) { if (qName.equals("titulo")) isTitle = true; } public void endElement(String uri, String localName, String qName) { if(qName.equals("titulo")) isTitle = false; } public void characters(char[ ] chars, int start, int length) { if(isTitle){ System.out.println("El titulo del libro es: " + new String(chars, start, length)); } } 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Pull • Inicialmente envolvente a SAX al estilo iterador • Pull iterador • Pull cursor 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Pull iterador XMLInputFactory factory = XMLInputFactory.newInstance(); Reader reader = new InputStreamReader(new FileInputStream("libros.xml")); XMLEventReader r = factory.createXMLEventReader( reader ); boolean isTitle = false; while(r.hasNext()) { XMLEvent e = r.next(); if(e.isStartElement() && ((((StartElement)e).getName()) .getLocalPart()).equals("titulo")){ isTitle = true; }else if(e.isCharacters() && isTitle){ System.out.println(""+((Characters)e).getData()); }else if(e.isEndElement() && ((((EndElement)e).getName()) .getLocalPart()).equals("titulo")){ isTitle = false; } } if(e.isStartElement() && ((((StartElement)e).getName()) .getLocalPart()).equals("titulo")){ isTitle = true; }else if(e.isCharacters() && isTitle){ System.out.println(""+((Characters)e).getData()); }else if(e.isEndElement() && ((((EndElement)e).getName()) .getLocalPart()).equals("titulo")){ isTitle = false; } 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Pull-cursor XMLInputFactory factory = XMLInputFactory.newInstance(); Reader reader = new InputStreamReader( new FileInputStream("libros.xml")); XMLStreamReader r = factory.createXMLStreamReader( reader ); boolean isTitle = false; while(r.hasNext()) { int evento = r.next(); switch(evento){ case XMLStreamConstants.START_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = true; break; case XMLStreamConstants.CHARACTERS: if(isTitle) System.out.println(r.getText()); break; case XMLStreamConstants.END_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = false; break; } } case XMLStreamConstants.START_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = true; break; case XMLStreamConstants.CHARACTERS: if(isTitle) System.out.println(r.getText()); break; case XMLStreamConstants.END_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = false; break; } 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Taxonomía de las APIs XML Eventos Push Árboles SAX Pull BEA DOM Iterador kXML1 StAX DOM4J JDOM Cursor XmlPull (XNI2XmlPull, kXML2, XPP3) XPP2 … Neko Pull Mezcla XPP1 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Temporización de las APIs Push SAX1 Ælfred SAX2 Pull XP www.trantor.de/xml/ NekoPull kXML1 StAX XPP1 BEA Iterador Cursor XmlPull1: kXML2 XPP3 1998 1999 2000 2001 2002 2003 2004 2005 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
FCM: Free Cursor Mobility • Event-based (vs tree-based) • Serial-access mechanism for accessing XML data • Mantain a serialized representation (vs tree) • Cursor: go back to early position/leap ahead • Pull-everything • In-situ XML parser (vs data copying) 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Nuevos métodos • public void setCursorToPreviousSibling(), • configura el cursor al hermano previo de un elemento • public void setCursorToParent(), • configura el cursor al padre de un elemento, si lo tuviera • public void setCursorToRoot(), • configura el cursor al nodo raíz. public void setCursorToPreviousSibling() public void setCursorToParent() public void setCursorToRoot() 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Nuevos métodos public boolean hasPreviousSibling() • devuelve un valor cierto (true) si el elemento en el cual está en un determinado momento tiene hermano previo. • configura el cursor al padre de un elemento, si lo tuviera • saltar subsecciones del documento XML. Este método sitúa el cursor al final de un elemento, saltando todos los hijos que pudiera tener. Este método presenta unas características excelentes en cuanto a que no instancia objetos, por lo que no consume memoria. public boolean hasParent() public void skipWithoutParseChilds() 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Funcionamiento de FCM InputStream input; //... XMLFCMReader r = new XMLFCMReader(); r.parse(input ,input.available()); boolean isTitle = false; while(r.hasNext()) { int evento = r.next(); switch(evento){ case XMLFCMConstants.START_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = true; break; case XMLFCMConstants.CHARACTERS: if(isTitle) System.out.println( "El titulo del libro es:" +r.getText()); break; case XMLFCMConstants.END_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = false; break; } } case XMLFCMConstants.START_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = true; break; case XMLFCMConstants.CHARACTERS: if(isTitle) System.out.println( "El titulo del libro es:" +r.getText()); break; case XMLFCMConstants.END_ELEMENT: if((r.getLocalName()).equals("titulo")) isTitle = false; break; } 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Funcionamiento de FCM boolean flag1 = true; boolean flag2 = true; while (in.hasNext()){ evento = in.next(); if(evento == XMLFCMConstants.START_ELEMENT){ if((in.getLocalName()).equals("Header")&& flag1){ in.skipWithoutParseChilds(); flag1 = false; } if((in.getLocalName()).equals("Fault") && flag2){ in.setCursorToFather(); if( in.hasPreviousSibling() ){ in.setCursorToPreviousSibling(); flag2 = false; } } } } in.skipWithoutParseChilds(); in.hasPreviousSibling() in.setCursorToPreviousSibling(); 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
libros.xml Analizador SAX startElement “titulo” characters endElement “titulo” MiManejador isTitle = true Imprime el título isTitle = false Lee datos directamente Coloca los eventos libros.xml Analizador Pull START_ELEMENT “titulo” CHARACTERS END_ELEMENT “titulo” Aplicación next() next()Imprime titulo next() Lectura bajo petición Pide el evento libros.xml Analizador FCM START_ELEMENT“titulo” CHARACTERS END_ELEMENT “titulo” Aplicación next() next()Imprime titulo next() Lectura bajo petición Movimiento del cursor Pide el evento 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Productor/Consumidor Árbol DOM nodo Document Node Raíz Node hijo Texto Node hijo Texto analizador aplicación lectura/escritura datos XML Consumidor Productor analizador aplicación void startDocument () void endDocument () void characters(char buf [], int offset, int len) void endElement (String uri, String lNam, String qName) datos XML void startElement(String uri, String localNam, String qName, Attributes attrs) Consumidor Productor analizador aplicación boolean hasNext () true int next() START_DOCUMENT / START_ELEMENT, ... datos XML Consumidor Productor Mueve el cursor adelante o atrás boolean hasNext () boolean hasPreviousSibling () aplicación analizador true int next() void skipWithoutParsingChilds() datos XML START_DOCUMENT / START_ELEMENT, ... 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Implementation 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Movimiento del cursor <el>Romeo</el><conj>and</conj><ella>Julieta< analizador next() skiptWithoutParsingChilds() setCursorToParent() setCursorToPreviousSibling() Métodos del analizador eventos aplicación <?xml version=“1.0” ?> <root> <lovers> <el>Romero</el> <conj>and</conj> <ella>Julieta</ ella > </lovers> <sentence> Enamorados </sentence> </root> 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Implementando “well-formed” Analizador ... String[] conj lovers Representación Serializada root conj cursor <root><lovers><el>Romeo</el><conj>y</conj><ella>Julieta< Analizador Object[] Representación Serializada cursor <root><lovers><el>Romeo</el><conj>y</conj><ella>Julieta< 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Implementando “well-formed” Analizador cursor <root><lovers><el>Romeo</el><conj>y</conj><ella>Julieta< 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Implementando “well-formed” element hijo padre … hermano … Otra información (Optional) Referencia al hijo de este elemento Referencia al padre de este elemento Referencia al hermano de este elemento Cursor de este elemento 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
\---com \---sierra +---io | | ArrayInputStream.java | | XMLReader.java | | XMLWriter.java | | | \---i18n | ReaderUCS4.java | ReaderUTF16.java | ReaderUTF8.java | WriterUCS4.java | WriterUTF16.java | WriterUTF8.java | \---xml | XMLConstants.java | +---fcm | Location.java | XMLFCMConstants.java | XMLFCMException.java | XMLFCMReader.java | XMLFCMWriter.java | \---namespace NamespaceContext.java QName.java \---com \---sierra +---io | | ArrayInputStream.java | | XMLReader.java | | XMLWriter.java | | | \---i18n | ReaderUCS4.java | ReaderUTF16.java | ReaderUTF8.java | WriterUCS4.java | WriterUTF16.java | WriterUTF8.java | \---xml | XMLConstants.java | +---fcm | Location.java | XMLFCMConstants.java | XMLFCMException.java | XMLFCMReader.java | XMLFCMWriter.java | \---namespace NamespaceContext.java QName.java Clases de la implementación 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
XMLFCMConstants.START_ELEMENT XMLFCMConstants.START_DOCUMENT XMLFCMConstants.END_ELEMENT XMLFCMConstants.PROCESSING_INSTRUCTION XMLFCMConstants.CHARACTERS XMLFCMConstants.SPACE XMLFCMConstants.END_DOCUMENT XMLFCMConstants.ATTRIBUTE XMLFCMConstants.DTD XMLFCMConstants.CDATA XMLFCMConstants.NAMESPACE Interfaz XMLFCMConstants 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
XMLFCMReader XMLFCMWriter +setCursorToPreviousSibling() +setCursorToParent() +setCursorToRoot() +hasPreviousSibling() +hasParent() +skipWithoutParseChild() +close() +getAttributeCount() +getAttributeLocalName() +getAttributeName() +getAttributeNamespace() +getAttributePrefix() +getAttributeType() +getAttributeValue() +getCharacterEncodingScheme() +getElementText() +getEncoding() +getEventType() +getLocalName() +getLocation() +getName() +getNamespaceContext() +getNamespaceCount() +getNamespacePrefix() +getNamespaceURI() +getPIData() +getPITarget() +getText() +getTextCharacters() +getTextLength() +getTextStart() +getVersion() +hasName() +hasNext() +hasText() +isAttributeSpecified() +isCharacters() +isEndElement() +isStandalone() +isStartElement() +isWhiteSpace() +next() +nextTag() QName +close() +flush() +getNamespaceContext() +getPrefix() +getProperty() +setDefaultNamespace() +setNamespaceContext() +setPrefix() +writeAttribute() +writeCData() +writeCharacters() +writeComment() +writeDefaultNamespace() +writeDTD() +writeEmptyElement() +writeEmptyElement() +writeEndDocument() +writeEndElement() +writeEntityRef() +writeNamespace() +writeProcessingInstruction() +writeProcessingInstruction() +writeStartDocument() +writeStartElement() +writeStartElement() +writeStartElement() <<interface>> XMLConstants <<interface>> XMLFCMConstants <<interface>> NamespaceContext +getNamespaceURI() +getPrefix () +getPrefixes() XMLFCMException <<interface>> Location 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Validation 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Funcionamiento de FCM 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
kXML FCM TAMparser Xparse-J 44 300 bytes 47 032 bytes 116 384 bytes 280 464 bytes 1728 bytes 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
kXML FCM TAMparser Xparse-J 239 140 bytes 352 204 bytes XXXX XXXX 24458 bytes 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Si Si No No No Si No Si No No Si No No Si Si No Si Si No Si FCM ASCII UTF-8 UTF-16BE TAMparser UCS-4 kXML Xparse-J UTF-16LE Codificación soportada 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Sobre J2SE FCM Push DOM StAX-Iter. StAX-Curs. 79552bytes 83784 bytes 95400 bytes 102704bytes 248136 bytes 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Nombre del fichero Tamaño en byte prueba0.xml 35 prueba1.xml 226 prueba2.xml 6.312 prueba3.xml 199.650 Profundidad del archivo <a> <b> <c> ... </c> </b> </a> Para prueba0.xml: Para prueba0.xml: FCM Push DOM StAX-Iter. StAX-Curs. 69576bytes 80848 bytes 88464 bytes 86880bytes 246552 bytes Para prueba1.xml: FCM Push DOM StAX-Iter. StAX-Curs. 69952bytes 83008 bytes 92760 bytes 93704bytes 249704 bytes Para prueba2.xml: FCM Push DOM StAX-Iter. StAX-Curs. 82128bytes 137104 bytes X 288912bytes 352976 bytes Para prueba3.xml: FCM Push DOM StAX-Iter. StAX-Curs. 364968bytes 219584 bytes X 1121272bytes 1068456 bytes 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
prueba0.xml: prueba1.xml: prueba2.xml: prueba3.xml: 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />
Nombre del fichero Tamaño en byte atributos0.xml 43 atributos1.xml 207 atributos2.xml 5.617 atributos3.xml 181.379 Número de atributos <elemento nombre1=“valor1” nombre2=“valor2” ... > Para atributos0 .xml: FCM Push DOM StAX-Iter. StAX-Curs. 69592bytes 80944bytes 88624bytes 87080bytes 246624bytes Para atributos1.xml: FCM Push DOM StAX-Iter. StAX-Curs. 69920bytes 87800 bytes 97160bytes 104600bytes 250144bytes Para atributos2.xml: FCM Push DOM StAX-Iter. StAX-Curs. 80736bytes 276472 bytes 326392 bytes 281928bytes 344320bytes Para atributos3.xml: FCM Push DOM StAX-Iter. StAX-Curs. 328424bytes X 1079544 bytes 1038288bytes X 1ª Conferência Ibérica de Sistemas e Tecnologias de Informação Antonio J. Sierra CISTI 2006 Esposende, Portugal <FCM />