liverpoolman Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Παιδια θελω να ενωσω περιπου 1000 xml αρχεια... Ολα ηταν στο ιδιο αρχειο και τα εκανα unzip. Επισης τα εχω τσεκαρει και εχουν ιδιο αριθμο και ονομα στηλων ολα, οταν τα βλεπω σαν πινακες. Ουσιαστικα θελω να τα ενωσω ολα μαζι και να γινει ενας πελωριος πινακας, ωστε μετα να εξαγω δεδομενα που θελω με αθροισματα κτλ. Πως μπορει να γινει? Να πω οτι δεν εχω ιδεα απο xml παρα μονο απο sql και java και html σε ενα βαθμο, εαν μπορω να βοηθηθω απο αυτες?
GReaperEx Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Μπορείς να μας δείξεις 2 από αυτά τα αρχεία ως παράδειγμα για να καταλάβουμε τι θες να κάνεις?
tsofras Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Θές να κάνεις ουσιαστικά append κάθε xml αρχείο σε ένα ?
liverpoolman Δημοσ. 15 Απριλίου 2017 Μέλος Δημοσ. 15 Απριλίου 2017 Καθε xml αρχειο εχει μεσα απο εναν πινακα με δεδομενα, ολοι οι πινακες απο ολα τα xml εχουν ιδιες στηλες... Θελω ουσιαστικα να τα κανω ενα αρχειο xml δλδ. εναν πινακα.
Luciddream Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Τι μέγεθος έχουν όλα τα XML μαζί? όχι ότι παίζει ιδιαίτερο ρόλο, δεν ειναι δύσκολο να γίνει αυτό που θες... ακόμα και με copy - paste το κάνεις. Εκτός και αν δεν έχω καταλάβει τι θες να κάνεις Επίσης αφού ξέρεις Java μπορείς να χρησιμοποιήσεις το Apache POI και να δουλέψεις κατευθείαν πάνω στο "zip".
liverpoolman Δημοσ. 15 Απριλίου 2017 Μέλος Δημοσ. 15 Απριλίου 2017 Aν κανω copy paste τον κωδικα ουσιαστικα φανταζομαι θα επαναμβανονται καθε φορα οι στηλες. Ειναι περιπου 1gb. Aν το κανω copy paste επισης σημαινει οτι πρεπει να το κανω 1000 φορες οποτε δν συμφερει
Luciddream Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Aν κανω copy paste τον κωδικα ουσιαστικα φανταζομαι θα επαναμβανονται καθε φορα οι στηλες. Ειναι περιπου 1gb Πρέπει να μας δείξεις ένα παράδειγμα απο τα XML για να καταλάβουμε καλύτερα. Απλά το XML έχει elements, δεν έχει στήλες, οπότε μπερδεύει λίγο έτσι όπως το γράφεις. Anyway, αυτό που θες ακούγεται πολύ απλό να γίνει με XQuery. Είναι και λιγότερο απλό να γίνει με XML parsers/writers σε Java. Δεν ξέρω αν γίνεται αλλιώς αλλά και αν αξίζει να μάθεις ολόκληρη γλώσσα για να το κάνεις Ένα θέμα είναι ότι αν όλα τα XML είναι 1GB στην μνήμη θα πίανουν πολύ παραπάνω, ανάλογα τον parser / εργαλείο. Αυτό θα το δεις στην πράξη
tsofras Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 για να καταλάβουμε πρέπει λίγο να καταλάβεις και εσύ τι ακριβώς θέλεις. Το xml αρχείο δεν περιέχει πίνακες , περιέχει διάφορα tags. Αν όλα τα αρχεία αρχίζουν και τελειώνουν με τα ίδια μπορείς απλά να γράψεις κάτι σε java που διαβάζει ένα αρχείο και το γράφει σε ένα άλλο. Οπότε όταν τελειώσεις θα έχεις ένα μεγάλο αρχείο xml που περιέχει όλα τα tags. Απλά κοίταξε μήπως έχει tags που επαναλμβάνονται σε κάθε αρχείο και δεν πρέπει να τα βάζει μέσα στο ένα που θα τα περιέχει ολα και χαλάσεις την δομή του xml
liverpoolman Δημοσ. 15 Απριλίου 2017 Μέλος Δημοσ. 15 Απριλίου 2017 Πρέπει να μας δείξεις ένα παράδειγμα απο τα XML για να καταλάβουμε καλύτερα. Απλά το XML έχει elements, δεν έχει στήλες, οπότε μπερδεύει λίγο έτσι όπως το γράφεις. Anyway, αυτό που θες ακούγεται πολύ απλό να γίνει με XQuery (Update). Είναι και λιγότερο απλό να γίνει με XML parsers/writers σε Java. Δεν ξέρω αν γίνεται αλλιώς αλλά και αν αξίζει να μάθεις ολόκληρη γλώσσα για να το κάνεις Δεν υπαρχει πιο απλος τροπος? Γιατι πες οτι τα queries τα βρισκω πρεπει την διαδικασια να την κανω πολλες φορες και ειναι και μεγαλος ο ογκος των δεδομενων. Σκεφτηκα να τα μετατρεψω σε βαση δεδομενων sql και εκει να δουλεψω αλλα δν ξερω αν αξιζει. Προκειται για xml με στοιχεια απο επιχειρησεις κτλ. και ειναι ουσιαστικα διαχωρισμενα ανα χρονικες περιοδους ανα αρχειο xml Παιδια δειτε λιγο το λινκ ανεβασα ενα παραδιεγμα https://ufile.io/d949f
Luciddream Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Δεν υπαρχει πιο απλος τροπος? Γιατι πες οτι τα queries τα βρισκω πρεπει την διαδικασια να την κανω πολλες φορες και ειναι και μεγαλος ο ογκος των δεδομενων. Σκεφτηκα να τα μετατρεψω σε βαση δεδομενων sql και εκει να δουλεψω αλλα δν ξερω αν αξιζει. Προκειται για xml με στοιχεια απο επιχειρησεις κτλ. και ειναι ουσιαστικα διαχωρισμενα ανα χρονικες περιοδους ανα αρχειο xml Παιδια δειτε λιγο το λινκ ανεβασα ενα παραδιεγμα https://ufile.io/d949f Ωραία απο ότι βλέπω τα elements που σε ενδιαφέρουν είναι τα <Filing> οπότε θεωρητικά μπορείς να αφήσεις ένα <PublicFilings> element στο τελικό XML και να κάνεις copy paste όλα τα Filings το ένα κάτω απο το άλλο. Υποθέτω το κάθε Filing είναι unique. Πιο απλό δεν νομίζω να γίνεται. Μετά για να διαβάσεις τα στοιχεία πρέπει να γνωρίζεις XPATH ώστε να ζητήσεις τα elements που σε ενδιαφέρουν. Αλλιώς τα μετατρέπεις σε SQL μετά αν σε βολεύει. Εγώ που ξέρω Xpath / XQuery θα το έκανα εύκολα με αυτα τα δύο, και μετά με λίγο effort, export σε HTML.
Aztec Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Δεν καταλαβαίνω το να κάνεις append είναι εύκολο . Είτε με command line είτε με κάποιο file merge utility Με notepad++ κάνεις remove πολύ εύκολα το public fillings σε όλα τα αρχεία. Μετα προσθέτεις το ανοιγμα στο πρώτο και το κλείσιμο στο τελευταίο και τα κάνεις merge
liverpoolman Δημοσ. 15 Απριλίου 2017 Μέλος Δημοσ. 15 Απριλίου 2017 Το θεμα μου ειναι οτι ειναι 1000 τετοια περιπου αρχεια και εκτος αυτου δεν ξερω xml programming... Για να κανω αυτη την διαδικασια με copy paste και delete θα μου φαει πολυ χρονο και θα βγαλω τα ματια μου... Θελω κατι απλο πχ να τα φορτωσω καπου και να δωσω εντολες οπως ξερω με mysql στεκει αυτο?
Luciddream Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Το θεμα μου ειναι οτι ειναι 1000 τετοια περιπου αρχεια και εκτος αυτου δεν ξερω xml programming... Για να κανω αυτη την διαδικασια με copy paste και delete θα μου φαει πολυ χρονο και θα βγαλω τα ματια μου... Θελω κατι απλο πχ να τα φορτωσω καπου και να δωσω εντολες οπως ξερω με mysql στεκει αυτο? Δεν είπαμε να γίνει manually με το χέρι, μπορεί π.χ να γίνει append με ένα for loop απο python, bash ή απο bat αρχεία σε Windows, ή σε όποια γλώσσα σε βολεύει, και μετά με ένα εργαλείο π.χ editpad να γίνει delete το <PublicFilings> Για να τα διαβάσεις μετά τα δεδομένα συμφωνώ, θες κάτι να σε βολεύει, ίσως κάτι σαν αυτό ? https://dev.mysql.com/doc/refman/5.5/en/load-xml.html
liverpoolman Δημοσ. 15 Απριλίου 2017 Μέλος Δημοσ. 15 Απριλίου 2017 Δεν είπαμε να γίνει manually με το χέρι, μπορεί π.χ να γίνει append με ένα for loop απο python, bash ή απο bat αρχεία σε Windows, ή σε όποια γλώσσα σε βολεύει, και μετά με ένα εργαλείο π.χ editpad να γίνει delete το <PublicFilings> Για να τα διαβάσεις μετά τα δεδομένα συμφωνώ, θες κάτι να σε βολεύει, ίσως κάτι σαν αυτό ? https://dev.mysql.com/doc/refman/5.5/en/load-xml.html Οκ θα το προσπαθησω σε java ευχαριστω για τη βοηθεια
Luciddream Δημοσ. 15 Απριλίου 2017 Δημοσ. 15 Απριλίου 2017 Οκ θα το προσπαθησω σε java ευχαριστω για τη βοηθεια OK, απλώς σαν γενική παρατήρηση, δεν είναι όλα τα εργαλεία για την ίδια δουλειά. Δεν ξέρω πόσο εύκολα θα το γράψεις σε Java, με λίγο Googling και Stackoverflow μπορεις π.χ να βρεις πως να το κάνεις απο bash με cat και pipes. Σου δίνω και ένα παράδειγμα σε XQuery script (BaseX syntax) που έγραψα σε λιγότερο απο 2 λεπτά let $path := "/home/luciddream/tmp/files/" let $target := "/home/luciddream/tmp/result.xml" let $fileNames := file:list($path, true(), "*.xml") let $result := <PublicFilings>{ for $fileName in $fileNames return doc($path || $fileName)//Filing }</PublicFilings> return file:write($target, $result, map { "method": "xml"})
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα