XML - SAX, DOM y JDOM

 
Vista:

SAX, DOM y JDOM

Publicado por iban (1 intervención) el 05/07/2004 14:52:24
Hola necesito ejemplos de como realizar busquedas, inserciones y modificaciones en documento XML mediante SAX, DOM y JDOM.
muchas gracias
Un saludi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ejemplos de búsqueda, inserción y modificación en documentos XML con SAX, DOM y JDOM en Java

Publicado por Alejandro (258 intervenciones) el 10/07/2023 20:45:56
A continuación, te proporcionaré ejemplos de cómo realizar búsquedas, inserciones y modificaciones en un documento XML utilizando las bibliotecas SAX, DOM y JDOM en Java:

1. Búsqueda utilizando SAX:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
 
public class SAXExample {
    public static void main(String[] args) {
        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();
 
            DefaultHandler handler = new DefaultHandler() {
                boolean found = false;
 
                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                    if (qName.equalsIgnoreCase("book")) {
                        String title = attributes.getValue("title");
                        if (title.equalsIgnoreCase("Java Programming")) {
                            found = true;
                        }
                    }
                }
 
                public void endElement(String uri, String localName, String qName) throws SAXException {
                    if (qName.equalsIgnoreCase("library")) {
                        if (!found) {
                            // Realizar una acción si no se encontró el libro deseado
                        }
                    }
                }
            };
 
            saxParser.parse("ruta/al/archivo.xml", handler);
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

En este ejemplo, utilizamos la biblioteca SAX para buscar un libro con el título "Java Programming" en un archivo XML. Implementamos un controlador (`DefaultHandler`) que se activa cuando se encuentran elementos específicos durante el análisis del archivo XML. En el método `startElement()`, verificamos si el elemento actual es un "book" y si su atributo "title" coincide con nuestro criterio de búsqueda. Si se encuentra el libro deseado, establecemos la bandera `found` en `true`. En el método `endElement()`, verificamos si hemos alcanzado el elemento final "library" y si el libro deseado no se encontró, podemos realizar una acción adicional.

2. Inserción utilizando DOM:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
 
public class DOMExample {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("ruta/al/archivo.xml");
 
            // Crear un nuevo elemento
            Element newBook = document.createElement("book");
            newBook.setAttribute("title", "New Book");
            newBook.setAttribute("author", "John Doe");
 
            // Obtener el elemento padre donde se insertará el nuevo elemento
            Element library = (Element) document.getElementsByTagName("library").item(0);
            library.appendChild(newBook);
 
            // Guardar los cambios en el archivo XML
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(document);
            StreamResult result = new StreamResult("ruta/al/archivo.xml");
            transformer.transform(source, result);
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

En este ejemplo, utilizamos la biblioteca DOM para insertar un nuevo elemento "book" con atributos en un archivo XML existente. Cargamos el archivo XML en un objeto `Document`, creamos un nuevo elemento con sus atributos utilizando `createElement()` y `setAttribute()`, y luego lo agregamos al elemento padre "library" utilizando `appendChild()`. Finalmente, guardamos los cambios en el archivo XML utilizando la clase `Transformer`.

3. Modificación utilizando JDOM:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.File;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
 
public class JDOMExample {
    public static void main(String[] args) {
        try {
            File inputFile = new File("ruta/al/archivo.xml");
            SAXBuilder saxBuilder = new SAXBuilder();
            Document document = saxBuilder.build(inputFile);
 
            // Obtener el elemento deseado para modificar
            Element book = document.getRootElement().getChild("book");
            book.setAttribute("author", "New Author");
 
            // Guardar los cambios en el archivo XML
            XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
            xmlOutputter.output(document, new File("ruta/al/archivo.xml"));
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

En este ejemplo, utilizamos la biblioteca JDOM para modificar un atributo de un elemento existente en un archivo XML. Utilizamos `SAXBuilder` para cargar el archivo XML en un objeto `Document`, luego obtenemos el elemento deseado para modificar mediante `getChild()`, y finalmente actualizamos el valor del atributo utilizando `setAttribute()`. Guardamos los cambios en el archivo XML utilizando `XMLOutputter`.

Recuerda ajustar las rutas de los archivos XML según sea necesario en cada ejemplo.

¡Espero que estos ejemplos te ayuden a realizar búsquedas, inserciones y modificaciones en documentos XML utilizando SAX, DOM y JDOM!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar