3 ms·
Dear Lord in heaven, who can possibly prefer the XML version? That's hideous!
by wtbob 12y ago
Dear Lord in heaven, who can possibly prefer the XML version? That's hideous!
- quesera 12y agoXML parsers prefer the XML version. :) Less glibly, humans never have to deal with it. Data is serialized and deserialized, typically in binary format. It exports to XML merely as a convenience. And critically, XML can be typed properly for all ObjC/Cocoa types (sometimes with characteristic XML awkwardness). That XML is wrongly typed, due to the ambiguous source input. JSON would have similar problems. Correct beats pretty, in this case.
- FranOntanaya 12y ago> Less glibly, humans never have to deal with it As long as it works, unless we categorize programmers debugging XML issues as non-human drones.
- Alphasite_ 12y agoAnd that's why we have list editor.
- Alphasite_ 12y agoAnd that's why we have plist editor.
- wtbob 12y ago> XML parsers prefer the XML version. Well yeah, but an XML parser would also have no problem with '<tag name="p"><chardata><char>T</char><char>h</char><char>i</char><char>s</char><whitespace type="space" /><char>i</char><char>s</char><whitespace type="space" /><char>i</char><char>n</char><char>a</char><char>n</char><char>e</char><punctuation type="full-stop" display-char="." /></tag>', but that would be completely insane. > Less glibly, humans never have to deal with it. […] It exports to XML merely as a convenience. For…humans, no? > And critically, XML can be typed It looks like the plist supported types too, although I don't know for certain. At least, the numbers weren't quoted in the plist. > JSON would have similar problems. Would it? '"2" !== 2', IIRC. Of course, my preferred syntax would be: (dict (david great) (array (1 2 3 4))) if one wanted to treat numbers as text and: (dict (david great) (array ([int]1 [int]2 [int]3 [int]4))) if one wanted to indicate that they are ASCII decimal-encoded integers or: (dict (david great) (array ([bin-int]|AQ==| [bin-int]|Ag==| [bin-int]|AW==| [bin-int]|BA==|))) if one wished to use binary encoding using network-transfer order, but I am clearly insane. Not nearly as insane as whoever came up with that XML abomination, though.
- yawaramin 12y agoYes, a plist is defined as containing things of very specific types. See my SO answer [1] for an overview and an attempt at a Swift implementation. [1] http://stackoverflow.com/a/24051062/20371 http://stackoverflow.com/a/24051062/20371