更新:到目前为止,我的感觉(基于此comment)是XML用于通用数据传输,但是在最初的兴奋之后由于其低效性而受到青睐(并且它是低效的,因为它是通用的)更多的想法受到欢迎.
优点
人类可读格式:
每个人都可以通过阅读它来检查其内容.这使其成为易于使用且易于理解的通信形式.甚至商界人士都喜欢它(就我多年来对金融机构的经验而言),因为他们理解它,并且他们可以轻松地在消息传递系统中查看消息.只有他们才能决定哪个系统是错误的.让它们变得快乐:)将它与JSON相比较.我认为JSON远非读者友好,因为关闭括号比关闭XML中的元素更难跟踪.你必须回头看看是什么开始.您不需要任何编程技能来理解XML.甚至你的祖母也可以在半小时后理解它.
平台独立性:
无论你使用什么类型的语言和平台,你肯定会有一个解析器来阅读它.这使它可能是异构系统之间最好的通信形式.看到人们通常通过JMS队列传输XML,他们将XML发送到Web服务,他们在传输之前将对象映射到XML文档. XML是如此基本的东西,不同的解析器没有大问题.他们都了解XML.
改造的好工具
您可以使用XSL和XSL-FO将XML文档转换为几乎任何内容. HTML,PDF,TXT,CSV,其他一些XML文件等. XSL非常强大,因为它适应了XML的思维方式.它让你觉得递归,我总是喜欢在面向对象编程之后很有趣. XSL几乎适用于任何平台.您可以使用XSL从纯数据创建报表和文档.
您可以使用JAXB等技术轻松地将XML文档映射到编程对象.
用于验证的好工具
XSD使您能够为XML文档定义一些语法.模式本身不像XML那样用户友好,但最简单的结构如occourance,parenthood,attributes等易于理解和使用.所以这也是一个工具,对商务人士来说可能是好的. XSD适用于几乎所有平台.
XPath和XQuery
这两种技术都可以让您遍历和查询XML.优点与XSL和XSD相同,它们与平台无关. XPath是如此有效,即使对象树apache创建了相当于它:JXPath.
缺点
赘言
它可以占用任何磁盘空间. XML使日志变大,难以读取和获取.另一方面,您可以压缩日志.甚至可以压缩Web服务或JMS消息以减少通道的负载.但即使在这种情况下,压缩也是cpu和内存开销.另一方面,根据我的经验,XML和相关技术可以缩短开发时间,并且您节省的费用远远足以购买一个cpu. cpu比人便宜.
使用效率低下
什么样的对象(XPath表达式,XSL模板,XSD架构,XML解析器等)具有什么样的生命周期,这远非微不足道.什么可以缓存?很多人不正确地避免线程安全问题.这将导致你可怕的缓慢.我想强调一点,这不是技术问题,而是滥用问题.很多人都被困在旧的DOM解析器上,这是一个丑陋的事情.他们在它上面抽象了一些层,并为XML处理创建了专有的API,这很糟糕.继续,使用DOM4j或STAX或JAXB或任何标准.
创造特殊事物的虚假自由
许多公司使用XML创建了域特定语言或可怕的配置文件.由于它易于解析和遍历,因此他们甚至为全新的语言创建了解释器.语言被卡住了,从未创建过计划的开发工具.不要使用XML来制作程序.它不是用来的.不要在XPath中编程,因为它没有经过验证的设计时间.把事情做好. XML主要用于以某种标准形式传输数据.不要在XML中重新发明轮子.对于你自己而言,这将是一个程序化的轮椅,而不是一辆汽车.
关于XML的最佳教程是在ZVON我想.如果需要,可以使用它们.