Importazione di più file xml da una posizione della cartella<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho una cartella contenente molti file xml che vorrei aprire, estrarre informazioni da, salvare queste nuove informazioni separatamente e quindi chiudere entrambi i file. Posso farlo singolarmente utilizzando il componente aggiuntivo "Importa xml", ma vorrei passare automaticamente attraverso una cartella completa per ridurre la quantità di impegno e il tempo che dedico a questa operazione.
Ho allegato una cartella di esempio con file xml per aiutare se qualcuno ha il tempo di farlo.
Saluti
Davide
Ri: Importazione di più file xml da una posizione della cartellaSolo per aggiornare per chiunque cerchi su questo ...
Questo è ora gestito con facilità in JMP 15 con il file Importazione guidata XML E Importa più file .
È possibile utilizzare l'Importazione guidata su un singolo file per definire la struttura XML. Quindi copiare le impostazioni XML dallo script di origine e incollarle nelle impostazioni nella finestra di dialogo Importa più file.
Ri: Importazione di più file xml da una posizione della cartellaQuesto codice aggiuntivo è molto ben organizzato ed è possibile accedere a tutta la sua potenza e funzionalità eseguendo una funzione "master". Quindi, qui è abbastanza facile aggirare la GUI dell'addin e lasciarlo lavorare sui tuoi file xml in un ciclo.
Di seguito è riportato un modo per combinare l'addin con il ciclo di Ian. Si noti che potrebbe essere necessario impostare la variabile path, ovvero il percorso in cui è installato il componente aggiuntivo sul computer. Inoltre, se espandi questo codice, evita di utilizzare nomi di variabili che sono già usati dal codice incluso dall'addin, o potresti incorrere in problemi (es. non ho potuto usare io come iteratore del ciclo).
// Define path variable (may already be defined)
Set Path Variable("ADDIN_HOME", "Path/to/my/Addins");
// Define all the functions of the Addin but skip the GUI
Include("$ADDIN_HOME/com.jmp.matthew.wolfe.xml.importer/xml parser III.jsl") << close window;
dir = Pick Directory("Select the directory containing your files", "$DESKTOP");
fList = Files In Directory(dir);
myInfo = [];
For(filenr = 1, filenr <= N Items(fList), filenr++,
// Use Function from Addin to parse file into a data table
dt = runParser(dir || "/" || fList[filenr]);
//Extract your information here! (e.g n rows of dt)
myInfo |/= N Rows(dt);
//Close the data table
Close(dt, no save);
);
// Did it work? Summarize in a new data table
New Table("my xml files",
add rows(N Items(fList)),
New Column("Sample", character, Values(fList)),
New Column("n rows", numeric, values(myInfo))
);
Ri: Importazione di più file xml da una posizione della cartellaCiao David,
Controlla il componente aggiuntivo XML https://community.jmp.com/docs/DOC-7728 . Questo in combinazione con cosa Ian@JMP fornito dovrebbe farti andare.
Migliore,
Stan
Ri: Importazione di più file xml da una posizione della cartellaScusa, pensavo che il problema fosse il looping, non la lettura. Sì, dovrai analizzare l'XML per estrarre ciò che desideri dopo aver utilizzato "LoadTextFile ()" per inserire i contenuti in una variabile JSL. 'ParseXML()' dovrebbe aiutare.
Ri: Importazione di più file xml da una posizione della cartellaIan,
grazie per la pronta risposta ma non riesco a farlo funzionare con i file xml, devo analizzare questi o qualche altra tecnica per aprire questo tipo di file?
Saluti
Davide
Ri: Importazione di più file xml da una posizione della cartellaAvrai bisogno di qualcosa del genere, con 'Open()' invece di 'Print()' ovviamente:
dir = PickDirectory("Select the directory containing your files", "$DESKTOP");
fList = FilesInDirectory(dir);
for(i=1, i<=NItems(fList), i++,
Print(dir||"/"||fList[i]);
);