Modificar un DOM (Document, Node y Element)

5172 vistas

El API DOM ofrece con las clases Document, Node y derivados (Element, por ejemplo) una serie de métodos que permiten la modificación del documento.

Veamos un resumen de los disponibles para Document, Node y Element:

Métodos de Document

  • adoptNode(Node source): importa el nodo pasado por parámetro. Si pertenece al árbol se borrará. El método devuelve el nodo adoptado o null en caso de error.
  • importNode(Node importedNode, boolean deep): importa, en el documento, el nodo pasado por parámetro y sus hijos (si deep vale true). El do importade desta maner no tieneparent y, contrariamente a adoptNode, es una simple copia. Como resultado devuelve el nodo.
  • renameNode(Node n, String namespaceURI, String qualifiedName): renombra el nodo pasado por parámetro y devuelve éste último. Atención, sólo los nodos de tipo item y Attr se pueden renombrar de esta manera.
  • setDocumentURI(String documentURI): reemplaza la URI del documento.
  • setXmlStandalone(boolean xmlStandalone): define si el XML es "standalone" o no.
  • setXmlVersion(String xmlVersion): define la versión del XML ("1.0" por defecto).
  • normalizeDocument(): este método valida las modificaciones realizadas al DOM. Ver también el método normalize() de la interfaz Node.

Métodos de Node

  • appendChild(Node newChild): añade el nodo pasado por parámetro al final de los otros hijos del nodo. Devuelve el nodo añadido.
  • insertBefore(Node newChild, Node refChild): añade "newChild" antes de "refChild" y devuelve "newChild".
  • removeChild(Node oldChild): borra el nodo pasado por parámetro y lo devuelve como resultado.
  • replaceChild(Node newChild, Node oldChild): reemplaza oldChild por newChild y devuelve oldChild.
  • setNodeValue(String nodeValue): pone "nodeValue" como valor para el nodo. ver [iurl=90&all=0&fs=904#909]Tipos de nodos[/iurl] para saber los posibles valores.
  • setPrefix(String prefix): pone "prefix" como nuevo prefijo al nodo.
  • setTextContent(String textContent): pone "textContent" como contenido del nodo. Atención, esto borra el conjunto de nodos hijos.

Métodos de Element

  • removeAttribute(String name): borra el atributo "name".
  • setAttribute(String name, String value): crea un nuevo atributo (o modifica su valor si ya existe).
  • setIdAttribute(String name, boolean isId): crea un nuevo atributo de tipo ID (o modifica su valor si existe).

Estos tres métodos tienen variantes. Los métodos XXXNode permiten deveolver la instancia de Attr modificado o borrado.

Para un ejemplo de uso de algunos de estos métodos leer [iurl=90&all=0&fs=904#914]Crear un DOM[/iurl].

Estos métodos sólo modifican el árbol en memoria. Para modificar el código del XML tendremos que usar XSLT: [iurl=90&all=0&fs=916#921]Crear o modificar un fichero XML con DOM y XSLT[/iurl].