简体中文

开发者工具·语法转换器

旧版 XML 响应为 JSON:有利于检查,但对代码有风险

· 为什么它很重要

xml json 开发人员工作流程

XML 信封打开到架构边界旁边的可读 JSON 检查窗格中
原始 ToolAcre 矢量图

将 XML 响应转换为 JSON 是理解它的快速方法,但是在转换后的形状上构建解析器是一对一错误的产生方式。这篇文章划清了检查和实施之间的界限。

它适用于一个结果,但会破坏两个结果 - XML 提要看起来像一个整洁的 JSON 对象,直到出现第二个元素

具有一个结果的 XML 样本将其子项映射到对象或字符串;第二个兄弟将相同的属性转换为数组。因此,当基数发生变化时,针对第一个转换的样本编写的代码可能会失败。 JSON 是观察到的事件的投影,而不是模式感知合约。

ToolAcre 使映射可预测,但无法消除这种一对多的歧义。为了实现长期集成,请规范化 XSD 或文档化合同中的已知收集路径,并针对生产中实际使用的 XML 读取器测试这两个基数。

为什么转换非常适合阅读 - 嵌套扁平化为熟悉的大括号,属性作为键出现,并且整个响应可立即扫描

转换非常适合阅读,因为嵌套元素变成熟悉的对象,重复的同级元素变成数组,属性显示为 `@` 键。无需在心里匹配封口标签即可快速扫描大信封。类型推断可以保持关闭状态,因此文本不会被默默地猜测为数字或布尔值。

可读视图在事件分类期间特别有用,其中定位错误代码或有效负载比保留作者标记更重要。将源代码保留在 JSON 旁边,因为投影可能不会保留应用程序代码所需的所有区别。

为什么转换后的形状不稳定——重复元素只有重复才变成数组、属性前缀、出现或消失的文本节点

转换后的形状取决于出现次数、保留前缀以及元素是否具有属性或子元素。纯文本可以折叠为字符串;添加结构时,相同的文本会移动到 `#text` 下。 CDATA 出现在 `#cdata` 下,属性使用 `@`。

这些转换是记录在案的约定,而不是不稳定的实施事故。仅当代码假设一个样本定义了所有未来的 XML 形状时,它们才会变得有风险。模式感知模型可以说明可重复性和可选性;通用解析器不能。

代码可能需要的东西会丢失——命名空间、元素顺序、混合内容、CDATA 边界和注释

命名空间前缀保留在属性名称中,声明保留为 `@xmlns:*`;他们没有决定扩展名称。 CDATA 仍然在其特殊键下进行标记。评论、声明和处理说明将被删除。子元素周围的混合文本被连接并失去相对位置。

元素顺序不能安全地替代 XML 节点序列。如果文档顺序、混合散文或精确的 CDATA 边界很重要,请使用 XML 树或事件解析器,而不是此 JSON 形状的视图。

命名空间前缀和 CDATA 值保持可见,但排序和节点边界可能会丢失

使用带有命名空间前缀、一个正文子元素和两个结果元素的信封形文档。转换显示主体路径,保留文字前缀并生成结果数组。该示例演示了导航,但没有声明 WSDL、SOAP 错误或命名空间解析支持。

然后重复一个结果并观察数组消失。该对是回归夹具应用程序代码所需的。 ToolAcre 可以揭示差异;它无法决定您的域是否应始终将值包装在数组中。

工作示例:未声明 SOAP 模式支持的信封形 XML 文档

当映射被记录、基数被规范化并且固定装置覆盖属性、空值、混合内容和命名空间时,对于以数据为中心的 XML 来说,依赖于转换是合理的。将映射本身视为应用程序拥有的接口。

保持类型推断显式。关闭它时,值是字符串;打开它后,解析器启发式选择数字和布尔值。稳定的映射不应在环境之间意外切换该选项。

这不包括什么 - 用于生成类型化客户端的 WSDL 和 XSD 工具,这是长期集成的可靠途径

不包含 WSDL 或 XSD 工具。转换器验证格式正确的 XML,拒绝每个 DOCTYPE 和项目节点;它不会生成类型化客户端、验证序列或强制执行域方面。这些任务需要模式感知软件。

DOCTYPE 拒绝还意味着某些遗留文档将无法解析,即使它们的声明是无害的。这是防止实体扩展的安全边界,而不是底层服务响应格式错误的证据。

要点:转换以理解,解析以实现 — 以及语法转换器面板如何在几秒钟内为您提供可读视图

转换理解;根据拥有的合同进行解析以实施。 JSON 视图可以在几秒钟内显示有效负载,而原始 XML 仍然是排序、基数和命名空间的证据。

语法转换器对其投影和警告是诚实的。使用这种可见性来设计边缘情况测试,而不是让一个整洁的示例定义一个在下一个重复元素上中断的集成。

一套耐用的固定装置应包括零次、一次和多次出现的可重复元素;属性和子级共享一个名称;自闭合元件;混合文本;数据数据;和文字命名空间前缀。通过您实际部署的映射运行这些装置并断言规范化域对象,而不是 ToolAcre 的格式化 JSON 文本。该方法使用转换器来探索形状,同时将生产行为与显式解析器契约联系起来。