Salve a tutti, premetto che non sono un utilizzatore di Javascript (solitamente utilizzo Java) ma mi sono trovato a dover modificare uno script e avrei bisogno di aiuto.
Attualmente ho una app in Java che, tra le altre funzioni, carica un file XML e lo converte in stringa da dare in pasto successivamente ad un altro applicativo. In sintesi il codice Java che utilizzo è il seguente:
Document xmlDoc = null;
String docPath = "test.xml";
File xmlDocFile = new File(docPath);
try {
DocumentBuilder db = dbf.newDocumentBuilder();
xmlDoc = db.parse(xmlDocFile);
transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(xmlDoc);
StringWriter strWriter = new StringWriter();
StreamResult stResult = new StreamResult(strWriter);
transformer.transform(source, stResult);
String xmlString = strWriter.getBuffer().toString();
}
catch (Exception e) {
e.printStackTrace();
}
Il mio problema è il dover fare la stessa identica cosa in Javascript. Al momento sto provando in questo modo:
const xml2js = require('xml2js');
const fs = require('fs');
const parser = new xml2js.Parser({ attrkey: "ATTR" });
var newXmlString = "";
// this example reads the file synchronously
// you can read it asynchronously also
let xml_string = fs.readFileSync("test.xml", "utf8");
parser.parseString(xml_string, function(error, result) {
if(error === null) {
//console.log(result);
const objectToXmlString = require('object-to-xml-string');
const obj2xml = new objectToXmlString();
newXmlString = obj2xml.convert(result);
}
else {
console.log(error);
}
});
Purtroppo non riesco ad ottenere un output uguale a quello che ottengo in Java, o meglio, la variabile xml_string che ottengo dal caricamento del documento sembra essere nello stesso formato che ottengo dallo script in Java ma l'applicativo a cui devo inviarla (non scritto da me) non l'accetta. Da quanto ho capito è normale dato che quella variabile include il documento caricato e non è una vera e propria stringa. La variabile newXmlString risulta invece diversa e quindi non corretta.
Qualcuno può aiutarmi?
Grazie