Anubis13 Δημοσ. 12 Νοεμβρίου 2014 Δημοσ. 12 Νοεμβρίου 2014 Καλησπέρα, έχω ένα αρχείο .xml το οποίο μοιάζει με το 3ο παράδειγμα από εδώ http://json.org/example Θέλω να το κάνω json με όσο πιο καθαρή μορφή γίνεται, δοκίμασα το https://github.com/martinblech/xmltodictκαι ενώ έχω ένα καλό αποτέλεσμα θα ήθελα κάτι πιο καλό και λίγο πιο γρήγορο. Κάποια πρόταση;
pmav99 Δημοσ. 12 Νοεμβρίου 2014 Δημοσ. 12 Νοεμβρίου 2014 Δεν νομίζω ότι θα βρεις κάτι καλύτερο. Φαντάζομαι ότι και μόνο που κάνεις το conversion η ταχύτητα θα είναι χειρότερη. Αν βρεις πάντως κάτι ενημέρωσε.
Anubis13 Δημοσ. 12 Νοεμβρίου 2014 Μέλος Δημοσ. 12 Νοεμβρίου 2014 Πιστεύεις ότι θα ήταν λάθος να κάνω το xml -> csv και μετά να δοκιμάσω να κάνω το csv -> json? Το δεύτερο το έχω καταφέρει το πρώτο δεν το έχω δοκιμάσει Σιγουρα θα είναι πιο αργό.
pmav99 Δημοσ. 12 Νοεμβρίου 2014 Δημοσ. 12 Νοεμβρίου 2014 Δεν ξέρω τι θες να κάνεις οπότε δεν έχω ιδέα. Εν γένει νομίζω ότι συνήθως δεν θα υπάρχει καλός λόγος για να μπεις σε μια τέτοια διαδικασία ιδίως αν σε απασχολεί η ταχύτητα (και τα αρχεία σου είναι μεγάλα). Πάντως δεν είναι και τόσο τραγικό να δουλέψεις απευθείας με xml.
Anubis13 Δημοσ. 12 Νοεμβρίου 2014 Μέλος Δημοσ. 12 Νοεμβρίου 2014 Ειναι γιατι το προγραμμα στο οποιο θα δινω τα αρχεια εχει xml format αλλα με ενα δικο του limited τροπο
pmav99 Δημοσ. 12 Νοεμβρίου 2014 Δημοσ. 12 Νοεμβρίου 2014 Και το xml -> whateva -> xml σου φαίνεται λογικό;
Anubis13 Δημοσ. 12 Νοεμβρίου 2014 Μέλος Δημοσ. 12 Νοεμβρίου 2014 τοσο κακο οσο και το xml -> modified xml
warchief Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 Ποσο μεγαλο ειναι το XML αρχειο? Αξιζει να το φορτωσεις ολο στην μνημη ? Αν ξερεις το format γραψε το δικο σου xml to dict parser χρησιμοποιώντας το xml.etree.cElementTree API
pmav99 Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 To lxml είναι πιο γρήγορο από το cElementTree.
warchief Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 To lxml είναι πιο γρήγορο από το cElementTree. Ναι ειναι, επισης ειναι και external package (extension για την ακριβεια)
pmav99 Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 Ναι αλλά εν γένει δεν είναι μεγάλο πρόβλημα η εγκατάστασή του ακόμα και στα windows http://www.lfd.uci.edu/~gohlke/pythonlibs/ Σε unix-οειδή μπαίνει και με pip install lxml Επισης αν χρησιμοποιείς το beautifulsoup, ο parser του είναι πιο lenient @TS τοσο κακο οσο και το xml -> modified xml εκτός και αν έχεις έτοιμο κώδικα που σου δίνει whatever -> modified xml νομίζω ότι είναι καλύτερο να γράψεις δικό σου parser. Με τον τρόπο αυτό θα έχεις λιγότερα στάδια άρα δε θα φοβάσαι τόσο πολύ bugs στις ενδιάμεσες βιβλιοθήκες.
warchief Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 Νομιζω ψυριζουμε λιγο την μυγα Απο απλη περιεργεια θα ηθελα να ξερω ποσο χρονο περνει το parsing αυτη την στιγμή και πιος ειναι ο ζητούμενος χρονος. Η εμπειρια μου με XML parsing λεει πως εαν σε ενδιαφερει η ταχυτητα εισαι ήδη σε λαθος μονοπατια (με XML)
Anubis13 Δημοσ. 13 Νοεμβρίου 2014 Μέλος Δημοσ. 13 Νοεμβρίου 2014 τα 10MB κανουν 10s. Οταν δοκιμασω μεγαλύτερο αρχείο θα σας πω.
nucleus Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 XSLT transformations? XML αρχείο <?xml version="1.0" encoding="UTF-8"?> <!-- Edited by XMLSpy --> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9.90</price> <year>1988</year> </cd> </catalog> XSL Transformation <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Edited by XMLSpy® --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> { "catalog" : [ <xsl:for-each select="catalog/cd"> { "title":"<xsl:value-of select="title"/>", "artist":"<xsl:value-of select="artist"/>" } <xsl:if test="position() != last()"> , </xsl:if> </xsl:for-each> ] } </xsl:template> </xsl:stylesheet> Αποτέλεσμα { "catalog" : [ { "title":"Empire Burlesque", "artist":"Bob Dylan" }, { "title":"Hide your heart", "artist":"Bonnie Tyler" } ] } Το παραπάνω είναι ένα json object που περιλαμβάνει ένα array από objects με title,artist. Τροποποιώντας το XSL μπορείς να κάνεις output XML,HTML ή οτιδήποτε άλλο.
warchief Δημοσ. 13 Νοεμβρίου 2014 Δημοσ. 13 Νοεμβρίου 2014 τα 10MB κανουν 10s. Οταν δοκιμασω μεγαλύτερο αρχείο θα σας πω. Κατι δεν κανεις καλα period. Δεν ειναι λογικο, το μεγεθος του αρχειου δεν δικαιολογει τοσο χρονο
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα