掌握 XML 文件:结构、应用场景和主要优势

XML 文件将结构化数据存储为嵌套的、人类可读的标签,而不是行和列。Microsoft 将该格式描述为“一种旨在管理和在人类可读的文本文件中共享结构化数据的技术”。本指南涵盖了这些文件是如何构建的、它们来自哪里、电子表格如何处理它们,以及如何从中获取答案。
什么是 XML 文件
它是一个纯文本文件,既包含数据,也包含它所描述事物的名称。以逗号分隔的导出文件只为您提供数值,并依赖表头行来表达含义。而带有标签的文件则在每个数值旁内联携带其含义。
这种设计带来了一个首先需要理解的后果。该格式是层级结构的,因此一条记录可以包含其他记录,深度可达数层。而电子表格是扁平的,这两种形态之间的差距正是大多数实际困难之所在。
Microsoft 的概述用一句话总结了其目的:该格式“极大地简化了数据库、应用程序和组织之间数据的定义、传输、验证和解释”。
结构是如何工作的
元素与嵌套
每个数值都位于一个命名的元素内,且元素可以包含其他元素。一张发票可以包含一个客户区块、一个商品明细列表和一个总计区块,每个区块都有自己的子元素。
嵌套是关键所在。它记录了扁平表格只能通过在多行中重复数值才能表达的关系。
自定义标签
标签名称并非由格式固定。正如官方概述所说,“应用程序设计人员可以创建他们自己的自定义标签、数据结构和架构。”
这就是为什么来自两个供应商的两个文件可以描述同一张发票,却几乎不共享任何字段名称。任何分析都必须从读取眼前的标签实际代表什么含义开始。
架构与验证
一个独立的架构文件定义了规则。Microsoft 直接描述了这种配对。数据文件“包含自定义标签和结构化数据”。架构文件“包含强制执行规则(如数据类型和验证)的架构标签”。
架构使用 .xsd 扩展名。该标准还定义了带有 .xslt 扩展名的转换文件,被描述为“用于应用样式并将 XML 数据转换为不同呈现格式”的文件。
这些文件有什么用途
您很少会主动选择这种格式。它通常来自一个已经运行多年的系统。
- 金融与银行业。 对账单和付款消息格式通常是带标签的,而不是带分隔符的。
- 电子发票。 许多国家的电子发票法规指定将带标签的文档作为法律效力文件。
- ERP 和 HR 导出。 运行已久的企业系统通常默认以此格式导出。
- 产品和内容源。 零售目录源和联合分发格式是基于标签的。
- 配置和 Office 文档。 现代 Office 文件格式是带标签部件的压缩集合。
这五种场景的模式都是相同的。该文件是为另一台机器生成的交换产物,而不是为分析师生成的工作文件。
与扁平格式的对比
| 带标签文件 (.xml) | CSV | Parquet | |
|---|---|---|---|
| 形态 | 嵌套,多层 | 扁平的行和列 | 扁平,列式存储 |
| 字段名称 | 与每个数值内联携带 | 仅表头行 | 存储在文件元数据中 |
| 验证 | 可选的架构文件强制执行类型 | 无内置 | 类型保存在架构中 |
| 可在文本编辑器中读取 | 是,尽管冗长 | 是 | 否 |
| 相同数据的典型大小 | 最大 | 中等 | 最小 |
| 常见来源 | 企业系统和交换标准 | 导出和报告 | 数据平台 |
如果您经常处理这些格式,我们关于 TSV 文件 和 Parquet 文件 的配套说明文章涵盖了该表格中扁平格式的一面。
Excel 如何处理该格式
这通常是大多数分析师接触该格式的地方,官方文档对所发生的过程有着异常清晰的说明。
导入路径不在主功能区上。Microsoft 的导入说明是“点击‘开发工具’ > ‘导入’”。该页面还向读者指出了显示该选项卡的步骤,因为默认情况下它是隐藏的。
用 Microsoft 的话来说,基本工作流包含“五个阶段”。您将架构文件添加到工作簿中,然后将其元素映射到单元格或表格。导入数据文件并将元素绑定到这些已映射的单元格。之后,您在 Excel 中进行操作,并将修改后的数据导出。
有两种行为比其他行为更重要。
如果您没有提供架构,Excel 将会推测一个。 在未先添加架构的情况下进行导入,“Excel 会尝试为您推断架构”。该推测是“基于 XML 数据文件中定义的标签”。
该推测随后会与工作簿一起存储。页面还指出,“您无法将 Excel 推断的架构导出为单独 XML 架构数据文件 (.xsd)”。
嵌套在导入过程中会被扁平化。 Microsoft 描述了以只读方式打开的结果。它是一个“带有行 and 列的二维表格,将 XML 标签显示为列标题”。根元素则“像标题一样被使用”。
这种扁平化正是您进行分析所需要的,但也正是丢失含义的地方。一个三层的层级结构变成了列,父子关系仅保留在标签的命名方式中。
主要优势
数据自解释。 字段名称与数值同行,因此即使文件与文档分离,仍然可以进行解释。
验证是生态系统的一部分。 架构可以在数据到达您之前强制执行数据类型和必填字段,这是任何纯分隔符导出文件都无法做到的。
它跨越组织边界。 正如官方概述所指出的,该格式“遵循行业标准指南,可以由各种数据库和应用程序进行处理”。
保留层级结构。 包含 12 个商品明细的一张发票仍然是一张发票,而不是重复表头数值的 12 行。
值得了解的局限性
冗长。 与扁平格式的相同数据相比,在每个数值周围重复标签名称会导致文件体积变大。
标签名称在不同供应商之间没有标准化。 自定义标签是该格式的一个特性,其代价是每个新来源都需要进行解释。
电子表格需要扁平化层级结构。 任何透视表、图表或公式都需要矩形数据,因此在开始分析之前必须改变数据形态。
导入可能会因验证而失败。 Microsoft 指出,“当 Excel 无法根据 XML 映射验证数据时,会显示 XML 导入错误对话框”。这会让您在开始之前不得不重新检查架构。
无需与数据形态作斗争即可获取答案
实际问题很少是“我该如何打开这个文件”,而是“我如何在今天下午之前用它生成一张图表”。
行之有效的途径正是 Excel 已经暗示的那种。将层级结构扁平化为矩形,决定层级结构的哪一层作为一行,然后以此进行分析。
Powerdrill Bloom 支持上传 Excel、CSV、PDF 和文档,因此应先将带标签的源文件转换为 CSV 或工作簿。Excel 自带的只读打开方式正好可以生成这样的矩形,您的数据工具中的任何转换步骤也是如此。
一旦数据扁平化,分析就变得普普通通。 CSV AI assistant 页面描述了这一路径。定价页面总结了这一结果:对您的数据进行提问,并“获得包含图表、表格和导出的可靠答案”。如果您特别需要图表,我们关于如何将 CSV 文件转换为图表的演练指南进行了全程覆盖。
在转换之前,有一个决定需要谨慎对待。仔细选择行粒度。每个商品明细一行与每张发票一行所回答的是不同的问题。
结论
该格式冗长、自解释且具有层级结构,这三个属性解释了与其协同工作的一切。它非常适合在组织之间传输数据,但在组织内部进行数据分析时则显得有些棘手。
将转换视为一项决策,而不是一件繁琐的杂务。选择成为一行的层级,并保留标签名称作为列标题。在此之后,工作就与任何电子表格分析无异了。
现在您的文件夹里正躺着这样一个文件吗?在扁平化的导出文件上尝试使用 Powerdrill Bloom,在投入构建数据管道之前先看看图表效果。
常见问题解答
XML 文件有什么用途?
它用于在系统和组织之间传输结构化数据。常见来源包括银行消息、电子发票、ERP 和 HR 导出、零售产品源以及 Office 文档的内部部件。
XML 和 CSV 有什么区别?
前者是层级结构的,并且在每个数值旁内联携带字段名称。后者是扁平的,并依赖单个表头行。带标签的格式还可以根据架构文件进行验证,而带分隔符的导出文件则无法做到这一点。
如何在 Excel 中打开 XML 文件?
Microsoft 记录的途径是“开发工具 > 导入”(Developer > Import),且“开发工具”选项卡默认是隐藏的。您也可以以只读方式打开文件,这将生成一个使用标签作为列标题的二维表格。
我需要架构文件来使用数据吗?
不需要。Microsoft 的文档指出,在未提供架构时,Excel 会尝试从标签中推断架构。推断出的架构会与工作簿一起保存,且无法导出为单独的 .xsd 文件。
什么是 XSLT?
Microsoft 将其描述为与数据格式一起定义的转换标准。它使用 .xslt 文件“来应用样式并将 XML 数据转换为不同的呈现格式”。