CML是一种基于XML的化学信息标记语言,通过等专用标签精确描述分子结构、反应及光谱数据,支持语义校验、嵌套扩展与多格式无损转换。

CML(Chemical Markup Language)是一种专为化学信息设计的XML格式,它用标准的XML语法来精确描述分子结构、化学反应、光谱数据等,让计算机能自动识别、交换和处理化学内容。
为什么用XML来表达化学信息
XML本身不规定具体含义,只提供结构化框架。CML在此基础上定义了一套化学专用标签,比如
- 所有原子坐标、键级、电荷、立体化学信息都能用属性或子元素表达
- 支持嵌套结构,例如一个reaction>内可包含多个
作为反应物或产物 - 可通过XML Schema(XSD)校验文件合法性,避免人为格式错误
CML文件长什么样
一个最简水分子CML片段类似这样:
它比SMILES更直观,比MOL文件更易解析,也比纯文本描述更具机器友好性。
本文档是python学习笔记与简明教程;为什么用Python作为编程入门语言?每种语言都会有它的支持者和反对者。去Google一下“why python”,你会得到很多结果,诸如应用范围广泛、开源、社区活跃、丰富的库、跨平台等等等等,也可能找到不少对它的批评,格式死板、效率低、国内用的人很少之类。不过这些优缺点的权衡都是程序员们的烦恼。作为一个想要学点编程入门的初学者来说,简单才是最重要的。当学C++的同学还在写链表,学Java的同学还在折腾运行环境的时候,学Pyt
CML和其他化学格式的关系
CML不是替代格式,而是整合枢纽:
- 几乎所有常见格式(MOL、SDF、PDB、XYZ、CIF)都可无损转换为CML
- 支持增量扩展:用户可自定义
添加实验条件、计算方法、作者信息等元数据 - 被JChem、Avogadro、Jmol、Open Babel等主流工具原生支持,也常用于化学数据库(如Crystallography Open Database)的数据导出
实际使用时要注意什么
CML强调语义正确性,不是“能跑就行”:
- 必须严格闭合标签,属性值加引号,符合XML基础语法
- 推荐用CML Schema(cml.xsd)校验,避免遗漏必需字段(如elementType不能为空)
- 大分子或晶体结构建议分块组织,用
包裹多个 ,提升可读性和加载效率









