read - remove node element javascript
Node+xmldom: ¿Cómo cambio el valor de un solo campo XML en javascript? (1)
¡Bien, descubrí el problema!
Estaba configurando nodeValue
pero realmente necesitaba establecer data
. Así que cambié
customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue = "test";
a
customerConfig.getElementsByTagName("name")[0].childNodes[0].data= "test";
entonces funcionó!
Utilizando el nodo v.0.10.29, Express v4.12.0 y xmldom v0.1.19, trato de hacer lo siguiente:
Pasos
- Leer un archivo XML en una cadena
- Convierta la cadena en un objeto XML usando xmldom
- Establezca el campo
<name>default</name>
en<name>test</name>
- Convierta el objeto XML nuevamente en una cadena
Problema
El problema es que después de configurar el campo <name>
, se establece correctamente en el objeto, pero cuando lo convierto en una cadena, el campo <name>
vuelve a ser el valor anterior (incorrecto).
Código
Así es el aspecto del código para esto:
var fs = require(''fs'');
var DOMParser = require(''xmldom'').DOMParser;
var XMLSerializer = require(''xmldom'').XMLSerializer;
var filename = "myFile.xml";
fs.readFile(filename, "utf-8", function (err,data)
{
//CREATE/PARSE XML OBJECT FROM STRING
var customerConfig = new DOMParser().parseFromString(data);
//SET VALUE TO "TEST" (<name>default</name> TO <name>test</name>)
customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue = "test";
//THIS OUTPUTS "test" WHICH IS CORRECT -
console.log(customerConfig.getElementsByTagName("name")[0].childNodes[0].nodeValue);
//SERIALIZE TO STRING
var xmlString = new XMLSerializer().serializeToString(customerConfig);
//THIS OUTPUTS THE FULL XML FILE,
//BUT STILL SHOWS <name>default</name> AND NOT <name>test</name>
console.log(xmlString);
});
El problema es que el campo <name>
no está configurando para test
en la cadena ... ¿Estoy pensando que hay un problema con la parte de serialización? ¿Alguien ve lo que estoy haciendo mal?
¡¡Gracias!!