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

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

Δημοσ.

Εχω ενα αρχειο .xml το οποιο δεν εχει tag Κλεισιματος και προσπαθω να βρω ενα τροπο να τα κλεισω. ψαχνοντας στο ιντερνετ διαβασα καποιον που ειπε να χρησιμοποιησω reqular expressions. Επειδη δε γνωριζω απο προγραμματισμο, ειδα ενα βιντεακι στο youtube με τα εισαγωγικα και με πιασε το κεφαλι μου. Το αρχειο μου εχει εγγραφες με την εξης μορφη. Οπως θα δειτε περα απο το record και το data στο τελος ολα τα αλλα ειναι ανοικτα. Πως μπορω να τα κλεισω ωστε μετα τι τιμη τους να εχει κλειστο tag? Αυτη ειναι μια εγγραφη και το αρχειο μου εχει 964, οποτε χειροκινητα δε παιζει κατι τετοιο

 

<record>
				<annotationAssetID>
				21B8B42286D791898D90F97E6C9AF669
				<annotationCreationDate>
				1374477130
				<annotationCreatorIdentifier>
				com~apple~iBooks
				<annotationDeleted>
				0
				<annotationIsUnderline>
				0
				<annotationLocation>
				epubcfi(/6/16[id124]!/4/52/10/1)
				<annotationModificationDate>
				1374477132
				<annotationStyle>
				3
				<annotationType>
				1
				<annotationUuid>
				D7809B1F-21F7-4C8A-AE58-7C0C9EEAEC69
				<futureProofing5>
				2. The Attraction
				<futureProofing6>
				396169932.000000
				<plAbsolutePhysicalLocation>
				0
				<plLocationRangeEnd>
				0
				<plLocationRangeStart>
				7
				<plUserData>
				<data>
				YnBsaXN0MDDWAQIDBAUGBwgMFx8gWWVuZE9mZnNldFVz
				dXBlcllzdGFydFBhdGhXZW5kUGF0aFVjbGFzc1tzdGFy
				dE9mZnNldCIAAAAA0gkFCgtXb3JkaW5hbBAHWkJLTG9j
				YXRpb26iDRTTDg8QERITWWNsYXNzTmFtZVVpbmRleFd0
				YWdOYW1lWWNhbGlicmUzOBAwUm9s0w4PEBUKFlljYWxp
				YnJlMTJTZGl2ohgc0w4PEBkaG1ljYWxpYnJlMzgQMFJv
				bNMODxAdCh5ZY2FsaWJyZTEyU2Rpdl5CS0VwdWJMb2Nh
				dGlvbiIAAAAACBUfJS83PUlOU1tdaGtyfIKKlJaZoKqu
				sbjCxMfO2NzrAAAAAAAAAQEAAAAAAAAAIQAAAAAAAAAA
				AAAAAAAAAPA=
				</data>
			</record>

 

Δημοσ.

Δε χρειάζεται να ξέρεις προγραμματισμό. Άνοιξε το αρχείο με έναν οποιοδήποτε κειμενογράφο. Προφανώς κράτα ένα αντίγραφο του αρχικού αρχείου,.

Θα κάνεις αντικαταστάσεις (συνήθως edit->replace) ως εξής:

αντικατάσταση του:

<annotationCreationDate>

με:

</annotationAssetID><annotationCreationDate>

Επιλέγεις αντικατάσταση όλων.

συνεχίζεις με την ίδια λογική μέχρι το <plUserData>

δηλαδή

αντικατάσταση του

<plUserData>

με

</plLocationRangeStart><plUserData>

Σε 5 λεπτά θα έχεις τελειώσει.

Δημοσ. (επεξεργασμένο)

...Ακυρο μαλλον εχεις δικιο, κατσε να δοκιμασω αυτο που πες

EDIT:

Ξερεις τι, σωστη σκεψη αλλα δε πετυχε. Διοτι καθε εγγραφη μπορει να εχει αλλα tags.

ΠΧ μπορει το πρωτο record να εχει name lastname age Και το επομενο να εχει name age οποτε με το αναστροφο replace δημιοργω κενα σε μια εγγραφη που δε θα χε καποιο tag. Οποτε οταν θα παω στο <age> και το κανω </surname><age> θα αφησω ενα κλειστο <surname> σε καποια εγγραφη που δε θα χε τετοιο tag

 

Οποτε θελω αποκλειστικα reqular expression. Δηλαδη να βλεπει το tag που ξεκιναει και στο τελος του κειμενου να το κλεινει.

Επεξ/σία από therock
Δημοσ.

Κάτι ψιλοκατάφερα με το απόσπασμα που ανέβασες...

Αποσυμπίεσε το συνημμένο στον υπολογιστή σου και άνοιξε το βιβλίο εργασίας record.xlsm (ελπίζω να διαθέτεις το Excel).

Ενεργοποίησε της μακροεντολές και πάτα στο κουμπί "Fixed XML".

Αν δεις ότι γίνεται η δουλειά, αντικατέστησε το περιεχόμενο του αρχείου record.txt με το XML κείμενό σου και ξαναπάτα το κουμπί.

Δυστυχώς, για την ώρα (είναι και λίγο περασμένη), δουλεύει μόνο σε ένα επίπεδο. Για παράδειγμα, θέτει το </plUserData> πριν το <data>, ενώ κανονικά θα πρέπει να μπει μετά το </data>.

Την περισσότερη δουλειά όμως πιστεύω να την κάνει σωστά.

 

FixXML.zip

Δημοσ.

ναι αλλά πως μπορείς να ξέρεις ποια tags είναι nested?

Δημοσ.

Εδω ειχα βρει αυτο που ρωταγα αρχικα καθως βλεπεω οτι ο τυπος ρωταει το ιδιο πραγμα με μενα.

https://stackoverflow.com/questions/28119526/how-to-fix-the-xml-file-which-missing-closing-tags/feed/

9 ώρες πριν, MastroGiannis είπε

Κάτι ψιλοκατάφερα με το απόσπασμα που ανέβασες...

Αποσυμπίεσε το συνημμένο στον υπολογιστή σου και άνοιξε το βιβλίο εργασίας record.xlsm (ελπίζω να διαθέτεις το Excel).

Ενεργοποίησε της μακροεντολές και πάτα στο κουμπί "Fixed XML".

Αν δεις ότι γίνεται η δουλειά, αντικατέστησε το περιεχόμενο του αρχείου record.txt με το XML κείμενό σου και ξαναπάτα το κουμπί.

Δυστυχώς, για την ώρα (είναι και λίγο περασμένη), δουλεύει μόνο σε ένα επίπεδο. Για παράδειγμα, θέτει το </plUserData> πριν το <data>, ενώ κανονικά θα πρέπει να μπει μετά το </data>.

Την περισσότερη δουλειά όμως πιστεύω να την κάνει σωστά.

FixXML.zip 17 kB · 4 downloads

Πολυ καλα προσπαθεια μαν αλλα δε δουλεψε 100%. Καταρχας μου κλεινει το record στα επομενα entries αλλα αυτο λυνεται ευκολα καθως ερχεται παντα πρωτο το annotationAssetID. Οποτε αν κανω ενα απλο replace απο </record><annotationAssetID> σε <annotationAssetID> αφαιρω αυτο το ασκοπο κλεισιμο του record. Το θεμα ειναι ομως οτι καποια entries εχουν εξτρα tags τα οποια εμειναν ανοικτα οταν ετρεξε την εντολη.

Στην ουσια το xml για το excel το θελω, καθως θελω να το εισαγω στο powerquery και να μετατρεψω τα tags σε table στηλες και να φτιαξω πινακα απο αυτο το αρχειο. Με τη ρουτινα σου καταφερα να φτιαξω το πινακα απλα ηταν ατελης καθως ελειπαν καποιες στηλες η οποια δεν ειχαν κλειστα tags

 

2 ώρες πριν, andreas49 είπε

ναι αλλά πως μπορείς να ξέρεις ποια tags είναι nested?

Σωστος. Δε θελω να ψαχνει αοριστα για tag με εκκρεμοτητα, αλλα μονο απευθειας μετα το κειμενο

ΠΧ <tag1>κειμενο ¨<κλεισιμο ταγκ στα καπακια>

<tag2> κειμενο <εδω ξανα κλεισιμο>

αλλα οχι να κλεινει ενα μεγαλυτερο υποσονολο. Δεν υπαρχει εκκρεμοτητα σε κατι τετοιο

Πχ δε θελω <synolo>

<tagk>

<tagk>

και εδω να κλεισει συνολο

Δημοσ. (επεξεργασμένο)

Δοκίμασε αυτό που σου στέλνω. Το έφτιαξα το πρόγραμμα βάσει της μιας μόνο εγγραφής. Αν δε λειτουργήσει στείλε μεγαλύτερο δείγμα και αν βρω χρόνο θα προβώ σε διορθώσεις. Το πρόγραμμα λειτουργεί μόνο σε Windows 10. Αν έχεις άλλο λειτουργικό ενημέρωσε.

XmlFix.appxbundle

Επεξ/σία από marios28
Δημοσ.

δε μου το περναει. Κατι λεει οτι θελει certificate

Εχω βαλει sideload apps και developer mode αλλα και παλι

ακυρο το περασα μισο να δοκιμασω

Δημοσ.
3 ώρες πριν, andreas49 είπε

ναι αλλά πως μπορείς να ξέρεις ποια tags είναι nested?

Ομολογώ πως δεν έχω ιδέα!... Ίσως κάποιο άλλο μέλος να έχει κάποια.

39 λεπτά πριν, therock είπε

Πολυ καλα προσπαθεια μαν αλλα δε δουλεψε 100%. Καταρχας μου κλεινει το record στα επομενα entries αλλα αυτο λυνεται ευκολα καθως ερχεται παντα πρωτο το annotationAssetID. Οποτε αν κανω ενα απλο replace απο </record><annotationAssetID> σε <annotationAssetID> αφαιρω αυτο το ασκοπο κλεισιμο του record. Το θεμα ειναι ομως οτι καποια entries εχουν εξτρα tags τα οποια εμειναν ανοικτα οταν ετρεξε την εντολη.

Στην ουσια το xml για το excel το θελω, καθως θελω να το εισαγω στο powerquery και να μετατρεψω τα tags σε table στηλες και να φτιαξω πινακα απο αυτο το αρχειο. Με τη ρουτινα σου καταφερα να φτιαξω το πινακα απλα ηταν ατελης καθως ελειπαν καποιες στηλες η οποια δεν ειχαν κλειστα tags

Όσο έγραφες προχώρησα το αρχείο και τώρα προσφέρει [εκτός της ευελιξίας στην επιλογή αρχείων] τη δυνατότητα αυτοματοποίησης των "χειροκίνητων" διορθώσεων, όπως στο παράδειγμα με το <data> και το <record>, αν και η περίπτωση του <record> θα μπορούσε να προβλεφθεί.

Αν η διαδικασία θα επαναλαμβάνεται στο μέλλον, και αφού είσαι ήδη στο περιβάλλον του Excel, νομίζω πως αξίζει να βελτιωθεί κι άλλο και θα χαρώ αν πιάσει τόπο η προσπάθειά μου.

FixXML.zip

Δημοσ.
29 λεπτά πριν, marios28 είπε

Δοκίμασε αυτό που σου στέλνω. Το έφτιαξα το πρόγραμμα βάσει της μιας μόνο εγγραφής. Αν δε λειτουργήσει στείλε μεγαλύτερο δείγμα και αν βρω χρόνο θα προβώ σε διορθώσεις. Το πρόγραμμα λειτουργεί μόνο σε Windows 10. Αν έχεις άλλο λειτουργικό ενημέρωσε.

XmlFix.appxbundle 780 kB · 1 download

βαζω το xml αλλα δε παιρνω καποιο output

 

16 λεπτά πριν, MastroGiannis είπε

Ομολογώ πως δεν έχω ιδέα!... Ίσως κάποιο άλλο μέλος να έχει κάποια.

Όσο έγραφες προχώρησα το αρχείο και τώρα προσφέρει [εκτός της ευελιξίας στην επιλογή αρχείων] τη δυνατότητα αυτοματοποίησης των "χειροκίνητων" διορθώσεων, όπως στο παράδειγμα με το <data> και το <record>, αν και η περίπτωση του <record> θα μπορούσε να προβλεφθεί.

Αν η διαδικασία θα επαναλαμβάνεται στο μέλλον, και αφού είσαι ήδη στο περιβάλλον του Excel, νομίζω πως αξίζει να βελτιωθεί κι άλλο και θα χαρώ αν πιάσει τόπο η προσπάθειά μου.

FixXML.zip 24 kB · 0 downloads

Μακαρι μαν να δουλεψει. Το προσπαθω τωρα και αν δεν θα δωσω και αλλες λεπτομερεις για το προτζεκτ

Δημοσ.
2 λεπτά πριν, therock είπε

βαζω το xml αλλα δε παιρνω καποιο output

Αν δεν παίρνεις, κάποιο πρόβλημα θα υπάρχει. Πρέπει να στείλεις μεγαλύτερο δείγμα ή καλύτερα όλο το αρχείο.

Δημοσ. (επεξεργασμένο)

 

54 λεπτά πριν, MastroGiannis είπε

Ομολογώ πως δεν έχω ιδέα!... Ίσως κάποιο άλλο μέλος να έχει κάποια.

Όσο έγραφες προχώρησα το αρχείο και τώρα προσφέρει [εκτός της ευελιξίας στην επιλογή αρχείων] τη δυνατότητα αυτοματοποίησης των "χειροκίνητων" διορθώσεων, όπως στο παράδειγμα με το <data> και το <record>, αν και η περίπτωση του <record> θα μπορούσε να προβλεφθεί.

Αν η διαδικασία θα επαναλαμβάνεται στο μέλλον, και αφού είσαι ήδη στο περιβάλλον του Excel, νομίζω πως αξίζει να βελτιωθεί κι άλλο και θα χαρώ αν πιάσει τόπο η προσπάθειά μου.

FixXML.zip 24 kB · 1 download

Καλυτερα πηγε τωρα αλλα παλι ειχε κατι παραλλειψεις. Βεβαια απ οοτι βλεπω τις σημαντικες στηλες τις πηρα, οποτε δεν υπαρχει λογος να σας κουραζω αλλο. Απλα να κανω μια τελικη πληρη αναφορα

Το αρχικο αρχειο αναφορα ηταν plist που χρησιμοποιει η apple σε Iphone και ipad και ειναι ενα τυπου xml αλλα με πιο αυστηρη δομη τυπου database oriented. Οποτε εχει εναν ηλιθιο τροπο που το οριζει και μια απλη εγγραφη πχ 

<name>Chris</name>
<lastname>Michael</lastname>
<age>28</age>

γινεται καπως ετσι

<key>name</key>
<string>Chris</string>
<key>lastname</key>
<string>Michael</string>
<key>age</key>
<integer>28</integer>

Δηλαδη το tag το οριζει μεσα σε key και τη τιμη του σε δευτερη γραμμη ωστε να δωσει και τυπο string η integer.

Εψαξα αρχικα σε ολο το διαδικτυο να βρω μηπως παιζει καποιος τροπος να μετατρεψεις το Plist σε xml που αναγνωριζει το excel και καθε αλλο προγραμμα αλλα βρισκω μονο ενα βιντεακι που απλα σου λεει πως μεσα απο itunes να κανεις export μια music playlist σε xml και οχι ενα οποιοδηποτε plist αρχειο. Επισης ρωτησα κα ιστο mrexcel forum αλλα ουτε εκει εδωσε καποιος λυση.

Ο τροπος που το προσεγγισα ηταν μεσα απο notepad++ εκανα search replace το <key> με < και </Key> με > ωστε να δημιουργησω τα tag ανοιγματος και επισης αντικατεστησα τα <string> </string> <integer> </integer> με κενο, ωστε να ακολουθει η τιμη, και ετσι παρεμενε το κλεισιμο των ανοικτων tags.

Κατι Plist editors που βρηκα επισης στο ιντερνετ απλα ανοιγαν τα Plist αλλα δεν ειχαν καποιο σοβαρο export function και οτι να κανες παραμενουν Plist.

Εν κατακλειδι με το παραπανω σκριπτακι νομιζω πηρα τι πληροφοριες απο το αρχειο που ειχα τραβηξει, αλλα ιδανικα θα ταν να σκαγε και ενας τροπος να μπορεις να μετατρεψεις ενα .plist σε xml ωστε να μπορεις να το δουλευεις σε excel και οχι απλα να το βλεπεις με καποιον plist viewer 

Επεξ/σία από therock
Δημοσ. (επεξεργασμένο)

Καλησπέρα,

Είχα ένα μισάωρο ελεύθερο και λέω να δοκιμάσω κάτι σε PHP. Είναι μια λύση σχετικά υπερβολική, έτσι για να καλύψω τα περισσότερα χαλασμένα XML δεδομένα που μπορεί να διαβάσω, άρα δεν είναι υποχρεωτικός όλος αυτός ο κώδικας. Ως δεδομένα εισαγωγής χρησιμοποίησα το κομμάτι XML της πρώτης ανάρτησης (το αρχείο το ονόμασα data.txt). Είναι ένα γρήγορο και βρώμικο scriptακι.
 

$ php -f ./eat-xml.php
[EAT-XML] Loading data.txt...
[EAT-XML] Read size: 1161
[EAT-XML] Load records: .
[EAT-XML] Records loaded: 1
[EAT-XML] Starting parse procedure

<?xml version="1.0"?>
<record>
  <annotationAssetID>21B8B42286D791898D90F97E6C9AF669</annotationAssetID>
  <annotationCreationDate>1374477130</annotationCreationDate>
  <annotationCreatorIdentifier>com~apple~iBooks</annotationCreatorIdentifier>
  <annotationDeleted>0</annotationDeleted>
  <annotationIsUnderline>0</annotationIsUnderline>
  <annotationLocation>epubcfi(/6/16[id124]!/4/52/10/1)</annotationLocation>
  <annotationModificationDate>1374477132</annotationModificationDate>
  <annotationStyle>3</annotationStyle>
  <annotationType>1</annotationType>
  <annotationUuid>D7809B1F-21F7-4C8A-AE58-7C0C9EEAEC69</annotationUuid>
  <futureProofing5>2. The Attraction</futureProofing5>
  <futureProofing6>396169932.000000</futureProofing6>
  <plAbsolutePhysicalLocation>0</plAbsolutePhysicalLocation>
  <plLocationRangeEnd>0</plLocationRangeEnd>
  <plLocationRangeStart>7</plLocationRangeStart>
  <plUserData/>
  <data>YnBsaXN0MDDWAQIDBAUGBwgMFx8gWWVuZE9mZnNldFVzdXBlcllzdGFydFBhdGhXZW5kUGF0aFVjbGFzc1tzdGFydE9mZnNldCIAAAAA0gkFCgtXb3JkaW5hbBAHWkJLTG9jYXRpb26iDRTTDg8QERITWWNsYXNzTmFtZVVpbmRleFd0YWdOYW1lWWNhbGlicmUzOBAwUm9s0w4PEBUKFlljYWxpYnJlMTJTZGl2ohgc0w4PEBkaG1ljYWxpYnJlMzgQMFJvbNMODxAdCh5ZY2FsaWJyZTEyU2Rpdl5CS0VwdWJMb2NhdGlvbiIAAAAACBUfJS83PUlOU1tdaGtyfIKKlJaZoKqusbjCxMfO2NzrAAAAAAAAAQEAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAPA=</data>
</record>

[EAT-XML] Game over

 

ΥΓ:
Το πρώτο επισυναπτόμενο αρχείο είναι χαλασμένο. Την δεύτερη φορά το ανέβασα ως zip.

ΥΓ2:
Ξέχασα να αναφέρω πως το scriptακι θέλει τα ακόλουθα modules να είναι εγκατεστημένα: php-mbstring & php-xml

 

eat-xml.zip

Επεξ/σία από dovecotDev
Δημοσ. (επεξεργασμένο)

Μα #

echo "[EAT-XML] Skatoules

#

😃😃

Επεξ/σία από Επισκέπτης

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

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

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

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

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

Σύνδεση

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

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