in
La comunitĂ  italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

da più file un unico file

Ultimo messaggio ricevuto il 21-07-2005 10.12 da theFool. 1 risposta(e).
Pagina 1 di 1 (2 elemento/i)
Ordina messaggi: Precedente Successivo
  • 21-12-2004 3.18

    da più file un unico file

    Qualcuno sa dirmi come ottenere da più file xml un uico file xml che contenga le informazioni che contenevano gli altri?
    Grazie anticipatamente!!
    • No log
  • 21-07-2005 10.12 In risposta a

    • theFool
    • Utente Top 10
    • Registrato il 13-07-2005
    • Piacenza
    • Messaggi 127

    Re: da più file un unico file

    Ciao,
    seppur tardivo eccoti un paio d'esempi su come fondere più files xml in un unico documento; si possono seguire 2 strade, ovvero:
    - gestire i files come semplici files di testo, e quindi occuparci manualmente della concatenazione ponendo attenzione alla formattazione dei tag (cfr. es.1);
    - gestire la fusione sfruttando le DOM-API (cfr. es.2);

    La seconda strada è quella più ortodossa, ma necessita di alcune competenze di base da cui non è possibile prescindere.

    Comunque, indipendentemente dalla soluzione seguita, l'approccio è sempre il medesimo:
    - aprire il file di indice (<i>indice.txt</i>)
    - leggerne il contenuto riga per riga, recuperando così un nome di file per volta
    [in alternativa si potrebbero sostituire questi primi due punti, con la consultazione di una directory da cui estrarre tutti i nomi di files (*.xml)]
    - caricare in memoria ogni documento ed accodarlo in un nuovo file (es.1) o in una nuova struttura dati (es.2)
    - salvare il nuovo file/documento (<i>file.xml</i>)


    *** ES.: 1
    <code>
    main( "indice.txt" , "file.xml" );

    function main( ndxFile , xmlFile )
    {
    var fso,tmp,tmpFile;

    fso = new ActiveXObject( "Scripting.FileSystemObject" );

    if( fso.fileExists( ndxFile ) ) {
    var txtNDX,txtXML,xmlDoc;

    txtNDX = fso.openTextFile( ndxFile );

    txtXML = fso.createTextFile( xmlFile );
    txtXML.write( "<?xml version=\"1.0\"?><elencoFiles>" );

    xmlDoc = new ActiveXObject( "MSXML.DomDocument" );
    xmlDoc.async = false;

    while( !txtNDX.atEndOfStream ) {
    var buff = txtNDX.readLine();

    if( buff != "" ) {
    var buffer,bOk;

    try {
    xmlDoc.load( buff );
    buffer = xmlDoc.documentElement.xml;
    bOk = (buffer!="");
    } catch( e ) {
    bOk = false;
    }

    if( bOk ) {
    txtXML.write( "<xmlDocument path=\"" + buff + "\">" );
    txtXML.write( buffer );
    txtXML.write( "</xmlDocument>" );
    } else {
    txtXML.write( "<xmlDocument path=\"" + buff + "\" nota=\"errore durante il caricamento!\"/>" );
    }
    }
    }

    txtXML.write( "</elencoFiles>" );
    txtXML.close();
    delete txtXML;

    txtNDX.close();
    delete txtNDX;

    delete xmlDoc;

    tmp = "Operazione completata!";
    tmpFile = xmlFile;
    } else {
    tmp = "Impossibile reperire il file indice.";
    tmpFile = ndxFile;
    }

    WScript.echo( tmp + "\n\nPath:\t" + tmpFile );

    delete fso;
    }
    </code>



    *** ES.: 2
    <code>
    main( "indice.txt" , "file.xml" );

    function main( ndxFile , xmlFile )
    {
    var fso,tmp,tmpFile;

    fso = new ActiveXObject( "Scripting.FileSystemObject" );

    if( fso.fileExists( ndxFile ) ) {
    var txtNDX,xmlDoc,xmlTmp;

    txtNDX = fso.openTextFile( ndxFile );

    xmlTmp = new ActiveXObject( "MSXML.DomDocument" );
    xmlTmp.async = false;

    xmlDoc = new ActiveXObject( "MSXML.DomDocument" );
    xmlDoc.async = false;
    xmlDoc.loadXML( "<?xml version=\"1.0\"?><elencoFiles/>" );

    while( !txtNDX.atEndOfStream ) {
    var buff = txtNDX.readLine();

    if( buff != "" ) {
    var bOk,ndDoc;

    try {
    var buffer;

    xmlTmp.load( buff );
    buffer = xmlTmp.documentElement.xml;

    bOk = (buffer!="");
    } catch( e ) {
    bOk = false;
    }

    ndDoc = xmlDoc.createNode( 1,"xmlDocument","" );
    ndDoc.attributes.setNamedItem( xmlDoc.createNode( 2,"path","" ) ).text = buff;

    if( bOk ) {
    ndDoc.appendChild( xmlTmp.documentElement.cloneNode(true) );
    } else {
    ndDoc.attributes.setNamedItem( xmlDoc.createNode( 2,"nota","" ) ).text = "errore durante il caricamento!";
    }

    xmlDoc.documentElement.appendChild( ndDoc );
    }
    }

    txtNDX.close();
    delete txtNDX;

    delete xmlTmp;

    xmlDoc.save( xmlFile );
    delete xmlDoc;

    tmp = "Operazione completata!";
    tmpFile = xmlFile;
    } else {
    tmp = "Impossibile reperire il file indice.";
    tmpFile = ndxFile;
    }

    WScript.echo( tmp + "\n\nPath:\t" + tmpFile );

    delete fso;
    }
    </code>




    ciao-ciao-ciao
    • No log
Pagina 1 di 1 (2 elemento/i)
Prelevato da http://www.devspy.com/forums/p/2727/3772.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"