Yes, I can. In XML you could basically write it like this:
So we know its something "person" with nested properties "name" = "John" and "age" = 20. As far as I can get, comparable protobuf declaration would give me just "John" and 20 on wire (plus some small extra to delimit two fields). Things like "name" or "age" are lost, in sense they are not transmitted in wire format. So decoder must have a priory knowledge it looks for exactly this kind of thing, not something else. So unless one knows they are looking for name and age there is no way to meaningfully decode John and 20 received on decoder input. Req'd knowledge is not xferred on the wire, it have to be obrained somewhere else, unlike with XML (which could also refer to full blown DTD, etc). Most ironic part? Forum's parser readily downgraded straightforward XML to same "john 20" pretty much in protobuf spirit. So it took some efforts to persuade parser to pike off . Though I would still admit protocol buffers are interesting thing. Bit it is not equivalent of XML. Probably one can get some agreement on top of protobuf, e.g. one can mandate there MUST be both "key" and its "value" and it is a "decode error" otherwise, so both name, age and values are sent over the wire as key-value pairs. But it is not a part of standard encoding rules or so. One can't parse arbitrary protobuf input meaningfully.