XML优化包括使用一组技术来检查XML流中元数据的设计优化的目标是帮助XML生产者最小化使用该语言的副作用。XML最常见的缺点是难以控制开销和锁定不同版本的XML。结果数量的增加可能需要更高的网络带宽来检索相同数量的内容这也可能需要更多的内存空间用于本地存储XML此外,XML解析器需要更多的时间来处理流XML优化通常会产生指示应该处理的相关信息的结果。有了这些信息,XML产品可以根据设定的操作规则来决定是使用可用的XML自动化工具还是应用转换技术。其他生产者甚至可能认为定义XML元数据的整个模式是合适的
XML性能改进方法
有许多可以通过XML调整XML性能的技术,使其比今天高得多在提供的XML声明中,XML文档可以用来指定字符编码的数量为了获得最佳性能,开发人员可以在XML文档中使用美国ASCII作为编码。使用ASCII字符开发的XML文档通常比其他标准更容易解析用UTF-8标准编码的XML文档通常有更多的ASCII字符因此,一些分析通常以与使用ASCII标准时相同的方式进行。
可以用来提高性能的另一个策略是减少新行的数量和文档中包含的空格的数量为了使编辑更加容易和方便,开发人员通常倾向于将文档组织成行。解析取决于字符的数量,而XML文档的整体性能取决于字符的数量。如果开发人员添加更多的空格,解析器最终将处理更多的字符,这将影响其整体性能。除非绝对必要,否则应该避免命名空间。
还可以通过使用字符串内部化技术来调整XML以使其性能更好。将SAX设置为true可确保解析器被指示将目标网址的各种XML名称和命名空间作为内部字符串进行报告启用此功能有助于加速相等的字符串在操作过程中,您可以调用解析器报告的名称和常量字符串值,而无需调用比较字符的equal属性。
可以用来提高XML文档性能的另一种优化方法是切换内容处理程序开发人员在处理大量的XML单词时遇到的最常见的问题是,它们最终可能在回调中包含大量的ifandese语句。在解析过程中注册新的内容处理程序有助于降低回调的复杂性和长度
的开发人员在处理包含大量外部实体引用的XML文档时经常会遇到问题对于每个有外部引用的实体,解析器希望从外部世界找到资源,找到并读取它们。当硬盘上的资源不可用时,这个过程甚至会很困难,解析器必须打开文件来读取它通过将实体加载到实体解析器的内存中,可以提高这种XML文档的性能。实体解析器应该以这样一种方式编写,即它可以在第一次读取实体时捕获其内容。没有必要招致两次搜索惩罚;应用程序只会产生这一成本。
建议在可能对处理外部实体不感兴趣的情况下,应用有助于绕过不必要信息的技术,从而提高XML性能。如果禁用了对这些实体进行处理的能力,并且遇到了相同的能力,那么SAX解析器将不会报告实体的内容。我更喜欢在内容处理程序的回调中将实体名称报告为跳过的实体如果开发人员对处理这些信息不感兴趣,他们可以关闭它来优化流程。通过仔细检查DOM上的节点操作,也可以实现
XML优化DOM定义了几种类型的节点,包括属性和元素在检索属性之前,执行查询操作以确定节点是否包含任何属性非常重要。如果属性可用,可以将节点转换为元素节点,并使用get attribute方法获取属性列表此方法有助于避免不必要的节点到元素的转换,从而创建一个空的名称节点映射。在的normalizeDocumentDOM级别3中使用的方法也可以用于在验证期间优化性能然而,由于名称空间的数量很大,它可能非常昂贵因此,解析器在处理文档时必须检查所有可用的名称空间
解析器配置的选择也对XML文档的性能有很大影响默认配置支持1.0/1、DTD和W3C格式的模式验证如果XML文档不需要任何验证,那么可以通过使用不支持验证的解析器配置来提高性能您可以设置代码来覆盖默认配置,而无需更改现有的类例如,您可以将系统属性设置为组织。Apache . Xerces . xni . parser . XML parser配置,指向预期的配置。
作为强大消息的未来的XML
在我看来,由于XML的功能性质,它仍然是一种强大的消息类型最好使用XML来实现内部系统的大量数据结构。这种语言有许多使数据存储成为首选语言的特性。与其他语言不同,XML主要是分层的这意味着它可以主要支持分层数据其次,它有一定的灵活性,特别是在开发各种模式时。它在节点上可以是刚性的,在其他节点上可以是松散的XML语言也在迅速发展。与某些需要完全迁移旧模式以适应新开发的语言不同,XML只需要修改旧模式以适应新版本