Προς το περιεχόμενο

XML to JSON in python


Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

έχω ένα αρχείο .xml το οποίο μοιάζει με το 3ο παράδειγμα από εδώ http://json.org/example

Θέλω να το κάνω json με όσο πιο καθαρή μορφή γίνεται, δοκίμασα το https://github.com/martinblech/xmltodictκαι ενώ έχω ένα καλό αποτέλεσμα θα ήθελα κάτι πιο καλό και λίγο πιο γρήγορο.

 

Κάποια πρόταση;

Δημοσ.

Δεν νομίζω ότι θα βρεις κάτι καλύτερο. Φαντάζομαι ότι και μόνο που κάνεις το conversion η ταχύτητα θα είναι χειρότερη. Αν βρεις πάντως κάτι ενημέρωσε.

Δημοσ.

Πιστεύεις ότι θα ήταν λάθος να κάνω το xml -> csv και μετά να δοκιμάσω να κάνω το csv -> json? Το δεύτερο το έχω καταφέρει το πρώτο δεν το έχω δοκιμάσει

Σιγουρα θα είναι πιο αργό.

Δημοσ.

Δεν ξέρω τι θες να κάνεις οπότε δεν έχω ιδέα. Εν γένει νομίζω ότι συνήθως δεν θα υπάρχει καλός λόγος για να μπεις σε μια τέτοια διαδικασία ιδίως αν σε απασχολεί η ταχύτητα (και τα αρχεία σου είναι μεγάλα). Πάντως δεν είναι και τόσο τραγικό να δουλέψεις απευθείας με xml.

Δημοσ.

Ποσο μεγαλο ειναι το XML αρχειο? Αξιζει να το φορτωσεις ολο στην μνημη ? Αν ξερεις το format γραψε το δικο σου xml to dict parser χρησιμοποιώντας το xml.etree.cElementTree API

Δημοσ.

Ναι αλλά εν γένει δεν είναι μεγάλο πρόβλημα η εγκατάστασή του ακόμα και στα windows

http://www.lfd.uci.edu/~gohlke/pythonlibs/

 

Σε unix-οειδή μπαίνει και με pip install lxml

 

Επισης αν χρησιμοποιείς το beautifulsoup, ο parser του είναι πιο lenient :P

 

@TS

 

τοσο κακο οσο και το xml -> modified xml

εκτός και αν έχεις έτοιμο κώδικα που σου δίνει whatever -> modified xml νομίζω ότι είναι καλύτερο να γράψεις δικό σου parser. Με τον τρόπο αυτό θα έχεις λιγότερα στάδια άρα δε θα φοβάσαι τόσο πολύ bugs στις ενδιάμεσες βιβλιοθήκες.

Δημοσ.

Νομιζω ψυριζουμε λιγο την μυγα :-) Απο απλη περιεργεια θα ηθελα να ξερω ποσο χρονο περνει το parsing αυτη την στιγμή και πιος ειναι ο ζητούμενος χρονος. Η εμπειρια μου με XML parsing λεει πως εαν σε ενδιαφερει η ταχυτητα εισαι ήδη σε λαθος μονοπατια (με XML)

Δημοσ.

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 ή οτιδήποτε άλλο.

Δημοσ.

τα 10MB κανουν 10s. Οταν δοκιμασω μεγαλύτερο αρχείο θα σας πω.

 

 

Κατι δεν κανεις καλα period. Δεν ειναι λογικο, το μεγεθος του αρχειου δεν δικαιολογει τοσο χρονο 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...