Conversione documento xml in stringa

di il
2 risposte

Conversione documento xml in stringa

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

2 Risposte

  • Re: Conversione documento xml in stringa

    Quali sono le differenze tra i due output in formato XML che ottieni?
    Hai provato a salvarli su disco, invece di inviarli, e poi confrontarli con un tool apposito?
  • Re: Conversione documento xml in stringa

    Inserisco degli estratti dato che si tratta di xml relativi a documenti sanitari molto lunghi.
    Dall'app Java ottengo qualcosa del genere:
    <?xml version="1.0" encoding="UTF-8"?><ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:epsos="urn:epsos-org:ep:medication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:epsos="urn:epsos-org:ep:medication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <realmCode code="EU"/>
            <realmCode code="EU"/>
            <typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/>
            <typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040"/>
            <templateId root="1.3.6.1.4.1.12559.11.10.1.3.1.1.3"/>
    Dallo script javascript, direttamente dal caricamento del documento ottengo:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:epsos="urn:epsos-org:ep:medication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:epsos="urn:epsos-org:ep:medication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <realmCode code="EU"/>
            <realmCode code="EU"/>
            <typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/>
            <typeId root="2.16.840.1.113883.1.3" extension="POCD_HD000040"/>
    Sempre dallo script javascript, passando per l'oggetto e riconvertendo ottengo:
    <ClinicalDocument><ATTR><xmlns>urn:hl7-org:v3</xmlns><xmlns:epsos>urn:epsos-org:ep:medication</xmlns:epsos><xmlns:xsi>http://www.w3.org/2001/XMLSchema-instance</xmlns:xsi></ATTR><realmCode><ATTR><code>EU</code></ATTR></realmCode><typeId><ATTR><root>2.16.840.1.113883.1.3</root><extension>POCD_HD000040</extension></ATTR></typeId><templateId><ATTR><root>1.3.6.1.4.1.12559.11.10.1.3.1.1.3</root></ATTR></templateId><id><ATTR><root>2.16.840.1.113883.2.9.2.190.4.4</root><extension>001.001.20080318123100</extension></ATTR></id><code><ATTR><code>87273-9</code><codeSystem>2.16.840.1.113883.6.1</codeSystem>
    Il terzo risultato è palesemente diverso e comprendo come venga rifiutato ma tra i primi due le differenze sono minime e non dovrebbero causare differenze sostanziali nell'xml.
Devi accedere o registrarti per scrivere nel forum
2 risposte