Mam około stu plików XML (o tej samej strukturze) i chcę je zaimportować w SAS. Niestety robiąc to mam pewne problemy związane z plikiem MAP plików XML (nie mam pliku MAP dla tych plików). Więc chciałbym przekonwertować te pliki w CSV przez Excel. Ale jeśli korzystam z tej ścieżki, potrzebuję czegoś, co jest w stanie przekonwertować masowo wszystkie moje pliki XML w CSV, ponieważ wyraźnie nie mogę konwertować osobno każdego pliku.
Ktoś wie, jak mogę rozwiązać?
Dzięki.
microsoft-excel
csv
xml
Giacomo Rosaspina
źródło
źródło
Odpowiedzi:
Rozwiązałem swój problem z tym skryptem VBA:
źródło
Ponieważ wydajesz się być zaznajomiony z SAS, albo będziesz musiał być wkrótce, użyję R, aby odczytać pliki Excel, a następnie ponownie je zapisać jako CSV.
Poniższy kod pozwala ustawić katalog roboczy, odczytać zawartość na liście i przeglądać listę, aby konwertować pliki w kilku wierszach.
źródło
Dla poniższego kodu możesz użyć dowolnego procesora XSLT-2.0 do konwersji XML na plik CSV.
Plik XML powinien mieć taką strukturę:
W tym przykładzie używam następującego pliku XML:
A to jest arkusz stylów XSLT-2.0, którego można użyć do przekształcenia wszystkich plików XML w pliki CSV. O ile to przetestowałem, działa na wszystkie przypadki opisane w specyfikacji . Ale szczerze mówiąc, nie mogę tego zagwarantować. Musisz to przetestować i przekazać tutaj swoją opinię.
Jednak oto kod XSLT-2.0, który konwertuje XML na CSV:
Wynikiem tego jest:
Jeśli umieścisz tę transformację w pętli skryptu, możesz przekształcić wiele plików XML jednocześnie.
źródło
.xslt
plik jakXML2CSV.xslt
a następnie zastosuj go do wszystkich plików XML za pomocą skryptu bash wywołującego procesor XSLT lub coś takiego. Na przykład za pomocą poleceniafor f in *.xml; do java -jar saxon9he.jar -xsl:XML2CSV.xslt "$f"; done
. Wystarczy przekierować dane wyjściowe do żądanych plików.