Método insertBefore() de XML DOM

Definición y uso

El método insertBefore() inserta un nuevo nodo hijo antes de un nodo hijo existente.

Este método devuelve el nuevo nodo hijo.

Sintaxis:

elementNode.insertBefore(new_node, existing_node)
Parámetros Descripción
new_node Obligatorio. Nodo a insertar.
existing_node Obligatorio. Nodo existente. Insertar un nuevo nodo antes de este nodo.

Consejos y notas:

Nota:Internet Explorer ignora los nodos de texto en blanco generados entre los nodos (como caracteres de nueva línea), mientras que Mozilla no hace lo mismo. Por lo tanto, en el siguiente ejemplo, utilizamos una función para verificar el tipo de nodo del último nodo hijo.

El tipo de nodo del nodo de elemento es 1, por lo que si el último nodo hijo no es un nodo de elemento, se mueve al nodo anterior y se verifica si este nodo es un nodo de elemento. Este proceso continuará hasta que se encuentre el último nodo hijo que sea un nodo de elemento. Con este método, se obtendrá el resultado correcto en Internet Explorer y Mozilla.

Para obtener más información sobre las diferencias entre IE y Mozilla navegadores, visite la sección de tutorial XML DOM en CodeW3C.com. Navegador DOM esta sección.

ejemplo

En todos los ejemplos, utilizaremos el archivo XML books.xml, y la función JavaScript loadXMLDoc().

El siguiente fragmento de código crea un nuevo nodo <book> y lo inserta antes del último elemento <book> del documento:

//verificar si el último nodocriollo es un nodo de elemento
function get_lastchild(n)
{
x=n.lastChild;
while (x.nodeType!=1)
  {
  x=x.previousSibling;
  }
return x;
}
xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
newTitle.appendChild(newText);
newNode.appendChild(newTitle);
xmlDoc.documentElement.insertBefore(newNode,get_lastchild(x));