why xml sucks


2000年以来,这是一个xml大行其道的年代。xml无所不能,我们如同崇拜x战警的强悍战斗力一般崇拜这个x开头的万能者。我们用它来传输数据(soap),定义数据(xsd),存储数据(xml数据库),配置文件(web.config或者web.xml),做网页(xhtml)......换一句二战的名言:如果xml能够做饭我就娶她做老婆。
但是神话就是用来打破的。现在是到了打破这个顶在x字头顶上的光圈了。
why xml sucks?
当然没有一个全无能的废人正如没有一个全能超人一样,xml并不是在所有的时候都sucks,我的确将题目夸大了。但是我的目的还是很明确的,我们将xml神话了,然后滥用了,之后xml就在很多自己并不擅长的地方sucks了。

fisrt sucks:存储数据
xml天然的不适合存储数据。第一是冗余数据太多,xml文件本身就够浪费的了,然而一个xml树在内存中会扩大将近10倍的体积,也就是说1M的xml文件在内存中会占据大约10M的空间。所以用xml来存储数据非常的suck,除非是非常小的存储量的情况。

second sucks:传输数据(比如ajax)
在Web上远程获取数据使用xml这个庞然大物简直是太浪费了,所以很快用ajax远程调用WS的方式很快就从xml的序列化改成了json这种轻量级的方式。群众的眼睛是雪亮的。

third sucks:配置文件
如果用过hibernate,或者spring,或者任何java的传统的类库,大概会严重同意xml的配置文件极大的伤害了我们的视力。确实xml的配置包含了太多的无用内容,不容易阅读(起码我就觉得还不如ini来得容易看)。而且就用途来说,类似hibernate或者spring的配置来说,与其说配置倒不如说是一种外置的DSL,特别是spring。也可能是java或者c#的死板和强硬造就了xml,所以yaml这类看着易懂,写起来哈皮的配置方式一直很难看到,还是IronPython的同学比较有福气。
老实说其实我很赞同程序也就是配置的思想(修改web.config会导致重新编译WebSite,那么我们修改了.cs文件导致重新编译有什么区别呢?特指WebSite的情况)。

归根结底,计算机语言 写的是人,看的是机器,而xml所标榜的语义在很多时候就毫无意义,为了人看着能明白,结果是牺牲了机器处理的效率,结果最后我们发现,其实如果没有很好的工具的话纯粹书写也绝对是一种酷刑。

so that's why xml sucks

say no to xml:当然暂时还做不到,除非.net支持yaml。
.net和java这对难兄难弟中xml的流毒很深,所以如果要对xml say no,还是投奔动态语言的怀抱吧。


【引用】
yaml:
 和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。
YAML不是XML。
介绍yaml的page:http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/

 

posted on 2008-08-26 23:56 亚历山大同志 阅读(1589) 评论(13) 编辑 收藏

评论

#1楼 2008-08-27 00:56 老农      

沙发  回复 引用 查看   

#2楼 2008-08-27 02:55 色鸟      

路过 留个脚印 请问楼主是否有更好的解决方案呢?  回复 引用 查看   

#3楼 2008-08-27 07:56 戏水      

哈哈 目前主流的xml使用方式 都被 Mr.怪 盖上了sucks的戳。
文章说的很好,的确是有的时候滥用了。 不过,怪怪兄为啥不说说xml到底用在哪些场景下 ,才是物有所值的呢?
 回复 引用 查看   

#4楼 2008-08-27 08:03 戏水      

刚看了一下 yaml 的确是不错 。 不过貌似还没有.net下的实现。 怪怪兄挥刀实现一个吧 :)  回复 引用 查看   

#5楼 2008-08-27 08:39 airwolf2026      

sucks出现在句子中一般怎么翻译啊?经常在国外论坛看他们用这个
比如,he sucks...
 回复 引用 查看   

#6楼 2008-08-27 09:09 robinhood      

早就觉得这样了,想写点xml的反对意见 今天终于有人出头了 呵呵
java/.net里面的xml真是sucks
 回复 引用 查看   

#7楼 2008-08-27 10:30 嘻哈呵嘿      

yet another mark lagnuage. ruby好用。  回复 引用 查看   

#8楼 2008-08-27 10:46 Gray Zhang      

@airwolf2026
这么翻译:XML恶心死了……
 回复 引用 查看   

#9楼 2008-08-27 10:50 Cat Chen      

XML背后有Microsoft、IBM等企业组成的一个庞大的利益集团,推广肯定做得好啦,你也没办法啊。

XML的真正优势是做meta-data,用XML来描述其它更复杂的数据。
 回复 引用 查看   

#10楼 2008-08-27 10:53 airwolf2026      

哈哈...  回复 引用 查看   

#11楼 2008-08-27 15:29 cloudgamer      

yaml还真没听过
看看先
 回复 引用 查看   

#12楼 2008-09-02 00:27 老三      

哈哈。。  回复 引用 查看   

#13楼 2008-10-26 16:21 ddr888      

suck lz's cock!

google一下
 回复 引用 查看   

导航

公告


放一首适合飚车的音乐,听这个开车会不知不觉的加速
昵称:亚历山大同志
园龄:5年
荣誉:推荐博客
粉丝:116
关注:0
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

搜索

 
 

常用链接

最新随笔

我的标签

随笔分类(128)

随笔档案(134)

相册

朋友的Blog

同事的Blog

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜