Agregar nodo XML DOM

Ejemplo

El siguiente ejemplo utiliza archivos XML books.xml.

Función loadXMLDoc()Ubicado en JavaScript externo, se utiliza para cargar archivos XML.

Agregar un nodo después del último nodo hijo
Este ejemplo utiliza el método appendChild() para agregar un nodo hijo a un nodo existente.
Agregar un nodo antes del nodo hijo especificado
Este ejemplo utiliza el método insertBefore() para insertar un nodo antes de un nodo hijo especificado.
Agregar una nueva propiedad
Este ejemplo utiliza el método setAttribute() para agregar una nueva propiedad.
Agregar datos a un nodo de texto
Este ejemplo utiliza insertData() para insertar datos en un nodo de texto existente.

Agregar nodo - appendChild()

El método appendChild() agrega un nodo hijo a un nodo existente.

El nuevo nodo se agregará (se añadirá) después de cualquier nodo hijo existente.

Nota:Si la posición del nodo es importante, utilice el método insertBefore().

El fragmento de código siguiente crea un elemento (<edition>) y lo agrega después del último nodo hijo del primer elemento <book>.

xmlDoc=loadXMLDoc("books.xml");
newel=xmlDoc.createElement("edition");
x=xmlDoc.getElementsByTagName("book")[0];
x.appendChild(newel);

Ejemplo de explicación:

  1. Al usar loadXMLDoc() Añadir "books.xmlCargar en xmlDoc
  2. Crear un nuevo nodo <edition>.
  3. Agregar este nodo al primer elemento <book>.

TIY

Bucle y agregar un elemento a todos los elementos <book>:TIY

Insertar nodo - insertBefore()

El método insertBefore() se utiliza para insertar un nodo antes del nodo hijo especificado.

Este método es muy útil cuando la posición del nodo agregado es importante.

xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
x=xmlDoc.documentElement;
y=xmlDoc.getElementsByTagName("book")[3];
x.insertBefore(newNode,y);

Ejemplo de explicación:

  1. Al usar loadXMLDoc() Añadir "books.xmlCargar en xmlDoc
  2. Crear un nuevo nodo de elemento <book>.
  3. Insertar este nodo antes del último elemento <book>.

TIY

Si el segundo parámetro de insertBefore() es null, el nuevo nodo se agregará después del último nodo hijo existente.

x.insertBefore(newNode,null) y x.appendChild(newNode) pueden agregar un nuevo nodo hijo a x.

Agregar una nueva propiedad

El método addAtribute() no existe.

Si el atributo no existe, el método setAttribute() puede crear un nuevo atributo:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book');
x[0].setAttribute("edition","first");

Ejemplo de explicación:

  1. Al usar loadXMLDoc() Añadir "books.xmlCargar en xmlDoc
  2. Establecer (crear) el valor del atributo "edition" del primer elemento <book> como "first"

TIY

Nota:Si el atributo ya existe, el método setAttribute() sobrescribirá el valor existente.

Agregar texto a un nodo de texto - insertData()

El método insertData() inserta datos en un nodo de texto existente.

El método insertData() tiene dos parámetros:

  • offset - En qué posición comenzar a insertar caracteres (comienza en 0)
  • string - La cadena a insertar

El siguiente fragmento de código agregará "Easy" al primer nodo de texto del elemento <title> XML ya cargado:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.insertData(0,"Hello ");

TIY