Deserialize objective-c binary NSMutableArray in python -


i'm putting google app engine webapp in python , i'm seeding database iphone app (sqlite).

i'm having bit of difficult on 3 fields defined blob fields , have binary serialized objects in them. (typically start out "bplist" i'm assuming it's binary serialized property list - ones interested in contain serialized nsmutablearray's within them.)

i'm suspecting 2 choices a) see how amenable binary format regex style scraping out of values (they text) b) write quick ios app, open database, export data better format

any other ideas, suggestions on best route, or (fingers cross) pointers sort of great python egg solves problems.

below have encluded sample , tried format reasonably medium - out of bottom need extract (anonymized actual data)

street = "1111 address ln #2004" street2 = "" city = "dallas" state = "tx" zip = "75243" country = "" type = "" 

here's data looks typical entry: http://dl.dropbox.com/u/6649380/serializedobject.txt

"000000acb  62 70 6c 69 73 74 30 30-d4 01 02 03 04 05 06 09   |bplist00Ô.|" "000000adb  0a 58 24 76 65 72 73 69-6f 6e 54 24 74 6f 70 59   |.x$versiont$topy|" "000000aeb  24 61 72 63 68 69 76 65-72 58 24 6f 62 6a 65 63   |$archiverx$objec|" "000000afb  74 73 12 00 01 86 a0 d1-07 08 54 72 6f 6f 74 80   |ts † Ñtroot€|" "000000b0b  01 5f 10 0f 4e 53 4b 65-79 65 64 41 72 63 68 69   |_nskeyedarchi|" "000000b1b  76 65 72 af 10 12 0b 0c-12 25 26 27 27 28 29 2a   |ver¯%&''()*|" "000000b2b  2b 2c 2d 2e 2f 30 34 3b-3e 55 24 6e 75 6c 6c d2   |+,-./04;>u$nullÒ|" "000000b3b  0d 0e 0f 10 56 24 63 6c-61 73 73 5a 4e 53 2e 6f   |.v$classzns.o|" "000000b4b  62 6a 65 63 74 73 80 11-a1 11 80 02 d3 0d 13 0e   |bjects€¡€Ó.|" "000000b5b  14 15 1d 57 4e 53 2e 6b-65 79 73 80 10 a7 16 17   |wns.keys€§|" "000000b6b  18 19 1a 1b 1c 80 03 80-04 80 05 80 06 80 07 80   |€€€€€€|" "000000b7b  08 80 09 a7 1e 1f 20 21-21 21 24 80 0a 80 0b 80   |€.§ !!!$€.€€|" "000000b8b  0c 80 0d 80 0d 80 0d 80-0e 54 63 69 74 79 55 73   |€.€.€.€tcityus|" "000000b9b  74 61 74 65 53 7a 69 70-57 73 74 72 65 65 74 32   |tateszipwstreet2|" "000000bab  54 74 79 70 65 57 63 6f-75 6e 74 72 79 57 73 74   |ttypewcountrywst|" "000000bbb  72 65 65 74 31 56 44 61-6c 6c 61 73 52 54 78 55   |reet1vdallasrtxu|" "000000bcb  37 35 32 34 33 50 d2 0d-31 32 33 59 4e 53 2e 73   |75243pÒ.123yns.s|" "000000bdb  74 72 69 6e 67 80 0f 5f-10 14 31 31 31 31 20 41   |tring€_1111 a|" "000000beb  64 64 72 65 73 73 20 4c-6e 20 23 32 30 30 34 d2   |ddress ln #2004Ò|" "000000bfb  35 36 37 38 58 24 63 6c-61 73 73 65 73 5a 24 63   |5678x$classesz$c|" "000000c0b  6c 61 73 73 6e 61 6d 65-a3 38 39 3a 5f 10 0f 4e   |lassname£89:_n|" "000000c1b  53 4d 75 74 61 62 6c 65-53 74 72 69 6e 67 58 4e   |smutablestringxn|" "000000c2b  53 53 74 72 69 6e 67 58-4e 53 4f 62 6a 65 63 74   |sstringxnsobject|" "000000c3b  d2 35 36 3c 3d a2 3d 3a-5c 4e 53 44 69 63 74 69   |Ò56<=¢=:\nsdicti|" "000000c4b  6f 6e 61 72 79 d2 35 36-3f 40 a3 40 41 3a 5e 4e   |onaryÒ56?@£@a:^n|" "000000c5b  53 4d 75 74 61 62 6c 65-41 72 72 61 79 57 4e 53   |smutablearraywns|" "000000c6b  41 72 72 61 79 00 08 00-11 00 1a 00 1f 00 29 00   |array     ) |" "000000c7b  32 00 37 00 3a 00 3f 00-41 00 53 00 68 00 6e 00   |2 7 : ? s h n |" "000000c8b  73 00 7a 00 85 00 87 00-89 00 8b 00 92 00 9a 00   |s z … ‡ ‰ ‹ ’ š |" "000000c9b  9c 00 a4 00 a6 00 a8 00-aa 00 ac 00 ae 00 b0 00   |œ ¤ ¦ ¨ ª ¬ ® ° |" "000000cab  b2 00 ba 00 bc 00 00-c0 00 c2 00 c4 00 c6 00   |² º ¼ ¾ À Â Ä Æ |" "000000cbb  c8 00 cd 00 d3 00 d7 00-df 00 e4 00 ec 00 f4 00   |È Í Ó × ß ä ì ô |" "000000ccb  fb 00 fe 01 04 01 05 01-0a 01 14 01 16 01 2d 01   |û þ.-|" "000000cdb  32 01 3b 01 46 01 4a 01-5c 01 65 01 6e 01 73 01   |2;fj\ens|" "000000ceb  76 01 83 01 88 01 8c 01-9b 00 00 00 00 00 00 02   |vƒˆŒ›      |" "000000cfb  01 00 00 00 00 00 00 00-42 00 00 00 00 00 00 00   |       b       |" "000000d0b  00 00 00 00 00 00 00 01-a3                        |       £       |" 

if planning on running script on mac, can use plutil command convert more parseable xml format:

plutil -convert xml1 -o outfile infile 

to have output go stdout, use - output file. if leave -o option out, output overwrite input file. if prefer, use json format instead of xml1 json formatted output.


Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -