当前位置: 首页 > 科技观察

XML的传奇人生

时间:2023-03-12 03:11:18 科技观察

1。出生与发展虽然我还不到20岁,但我的脸上已经充满了沧桑。这不能怪我,你们人类IT技术发展太快了。很多技术不到20岁、10岁,甚至5岁就消失了。20年来,我过着波澜壮阔的生活,曾经在很多领域称霸,而现在这些领域都被侵蚀得名声扫地。我的出生可以说是一个分水岭。在此之前,当程序要交换数据时,它们都使用自定义格式。千奇百怪,如:[978-7-229-03093-3|三体|刘慈欣|中国最佳科幻小说|38.00]{978-7-229-03093-3刘三体慈欣中国最佳科幻小说38.00}{(978-7-229-03093-3)(三体)(刘慈欣)(中国最佳科幻小说)(38.00)}这些角色我都认识,而且我可以很好地猜出其中的含义,但我必须问确切的含义是什么,只有互相交谈的两个程序知道,如果第三个如果你想参与这个程序,你必须问编码器每个字段的含义。那么现在,你只需要看看我的XML中的描述,你就会立刻明白:978-7-229-03093-3Three-Body刘慈欣中国最好看的科幻小说38.00我成了万能的世界语,不管你是Java、C#、Python.....只要能看懂XML格式,就可以互相交谈。显然,这种简单的格式并不难解析。一大批支持各种语言的XML解析器如雨后春笋般涌现。我们是一个大家庭,比如XMLDTD和XMLSchema。这两兄弟负责验证XML。一个程序拿到一个XML数据后,只需要用DTD/Schema检查一下,就可以知道这个数据是不是缺了一条胳膊。腿少,实在有问题就懒得往下看了。还有一种叫做小李飞刀的XPath,可以快速准确的从一大段复杂的XML中,刺出一个特定的节点,而不需要你一层一层的苦苦寻找。百变大师XSL/XSLT可以轻松地将XML转换为另一种表示和格式,例如HTML,其强大的功能令人瞠目结舌。我们一家人相互扶持,很快就攻克了数据交换和传输的领地。不仅如此,我们家族还成功地与Java结盟,将其提升到一个新的水平。一种是跨平台语言,另一种也是跨平台语言。你认为这是绝配吗?2除了数据传输,我首先在配置文件领域取得了成功。说到配置文件,之前简单的key=value这样的属性文件可以描述一个简单的结构,但是对于一个复杂的结构是不够的。我的XML不同。全称'ExtensibleMarkupLanguage',可扩展性极强,标签可以随意定制。复杂逻辑下,我的XML也得心应手。我给大家举个web.xml的例子:人的眼睛是雪亮的。看我的可扩展性这么强大,你可以定义任何你想要的标签。一个接一个从property文件叛逃,什么Struts,Spring,Hibernate,MyBatis在写配置文件的时候选择了我。这是一个巨大的胜利。除此之外,我还成功进入了一个新的领域。我们先来看一个例子:这段代码中的表示将一个文件从一个地方复制到另一个地方。就是把文件打成zip包,是不是一目了然?这其实是一段Ant的代码,一看就明白是怎么回事,所以我很适合用来描述任务和流程,因为里面有复杂的控件,其实仔细想想,Ant用的是我的标签定义一套用于自动处理的“语言”。程序员可以使用这种“语言”来编写非常复杂的程序。是不是很神奇?还有一个很好的例子,10多年前,各大厂商叫嚣SOA,Web服务开始流行。它还需要是跨平台的。它需要一种方式来描述一个Web服务有哪些操作,调用这个操作需要哪些输入参数,哪些输出参数等等。我以为它是为我量身定做的。我轻松搞定:“虽然有点长,但没办法,我的标签是成对出现的。没想到的是,程序员也把我应用到了接口描述领域。事实上,接口的生成是一个由来已久的难题。人类走到了两个极端。一种是把界面布局、控件等信息塞进一个文件当中,这个文件通常是人类无法直接读取的,而是由编辑器加载的,比如VB。另一个极端是完全用代码来生成界面,JavaSwing就是一个突出的代表。由于我的描述能力如此强大,可以用来描述界面,就像描述任务和流程一样。然后程序或框架读取XML并生成接口。如果想有个直观的认识,可以看看Android,还有早期Firefox的XUL,微信的XAML,都是用我来描述界面的。总而言之,我在数据交换、配置文件、任务和流程描述、Web服务描述、接口描述等领域都取得了成功。我不是自夸。这段时间确实是我一生中最美好的时光。俗话说,物极必反,极盛必衰。在数据传输和数据交换领域,一个洞很快就被Javascript和JSON撕开了。他们充分利用了人们对冗余标签的不满,想出了这样一种简洁的格式:简洁、数据量小、传输方便,更重要的是Javascript解析起来非常方便。我说你们瞎搞,没有schema,你们怎么验证你们的数据?出了问题怎么办?他们跟我说,老哥,你想多了,我们在同一个应用内部传输数据都是用JSON,从浏览器到服务器,或者从App到服务器,同一个公司的人,只要接口好就行defined,大部分情况下是没有问题的,懒得做校验,就算数据损坏了,直接抛错就好了。我无语了,只能眼睁睁看着JSON攻城略地,慢慢蚕食数据传输的高地。下面说说配置文件。喜欢我的码农开始吐槽了。他们说XML描述又臭又长。他们说短配置文件没问题。如果再长一点,我会头晕的。我应该怎么办?Spring、Hibernate和大佬们见风使舵,纷纷转向Java注解。XML文件配置能做什么,Java注解也能做什么,甚至做得更好,让我失去了一大批拥趸。SOA并没有持续多久,就逐渐没落了。一个叫RoyThomasFielding的家伙发表了一篇论文,提出了一种叫做RESTful风格的web架构,让人心潮澎湃。RESTful风格的服务开始流行起来。人越来越少。由于没有人使用Web服务,没有人使用XML来写WSDL,所以这个位置就慢慢失去了。我用手指一数,失去了三个重要位置,迅速从底部滑落。不是我不明白,是技术变化太快了,现在唯一让我欣慰的是,我在描述复杂的结构、任务和过程中仍然扮演着不可替代的角色。如果哪天出现一种全新的技术取代了我,我会老老实实让位,去养老院找我爷爷的GML(通用标记语言)老人。【本文为专栏作家“刘欣”原创稿件,转载请通过作者微信获取授权公众号coderising】点此查看该作者更多好文