Xml HandOn Practice Review(01) Object<->Xml

对于Object和Xml之间的转换,还有些自己的一点浅见:

  • Coding编码

广义的Xml编码就是形成Xml文档的过程,在涉及到对象串行化为Xml文档是也叫做Xml Binding。目前来看,Xml编码的过程可以分为三类。

1.) 渐增式;
首先形成Xml Dom空文档,然后逐个插入Xml节点,最终形成目标文档。这种方式对于格式复杂的消息是一个选择。灵活性很强。其缺点是性能开销偏大,编码繁复,Schema文件一旦修改,需要修改的地方偏多。

2.) 对象绑定;
对使用到的文档文件涉及为相关的对象,编写其Binding部分的函数,到时候可以直接串行化为Xml文档。这种方式的好处很明显,对象的使用者可以对Xml运用不做了解。方式更为简单。其缺点是对于很复杂的Xml模式,对象的开销偏大,控制起来也不太灵活。需要对象使用者对于Schema本身很有了解才行。

3.) 文本直接拼装编码;
这种方式直接,简单,有效。编码过程有别于解码过程。编码人非常清楚要编写的消息是什么,而解码时,解码人不知道自己拿到的文档是什么?所以说直接编码是可能的,而直接解码只适用于那些消息文档非常单一的场合。
加之直接编码性能开销很小。所以拼装编写不失为一种编码的好办法。不懂Xml的人也能拼装消息。其缺点也很明显:比较繁琐,代码书写者必须对Schema有足够的了解。不过通过利用函数封装,可以把这种缺点尽可能的缩小。

  • DeCoding解码

广义的解码可以看作是Xml的解析(Parsing):对于解析Xml,可行的方式非常有限。不利用任何Xml函数库支持的,直接搜索字符串方式解析的方法,只适用于非常有限非常简单的场合。这里不做讨论。因为我们面临的是格式多样的消息。

对于Xml解析,可以使用Dom解析和SAX解析相结合的方式进行。Dom较SAX开销较大,但是Dom对象作为系统内部传递的参数来看是极为合适。因为Dom的使用是极为简易的。不需要对Schema或者Xml有精深的了解。只需要按图索骥,拿出自己需要的部分就可以了。

 所以,对于解析采用Dom模型的方式,之前加上Schema认证应该是一个最常用的方式。

posted @ 2004-05-17 12:49  hgdfr  阅读(658)  评论(0编辑  收藏  举报