ToolConvoyToolConvoyv2.6
DATA

XML 转 YAML — 在浏览器中将 XML 数据转为 YAML 格式

将 XML 转换为 YAML 配置格式。可配置的属性处理方式、命名空间剥离和缩进选项,全部在浏览器中完成。

● 本地运行 · 零拷贝流水线页面加载以来工具发出的网络请求:0 次

XML 到 YAML 是两种很少在野生产环境中相遇的格式之间的转换。XML 是面向文档型数据的成熟交换格式——SOAP 报文、RSS 订阅源、XHTML 文档、金融交易日志——这些场景中数据值会同时携带元数据。YAML 是 DevOps 时代的配置语言——Kubernetes manifest、Ansible playbook、Docker Compose 文件、CI/CD 流水线定义——这些场景中数据由人编写、由机器读取。从 XML 转 YAML 大多是一次性任务:一份 XML 格式的 API 响应需要变成部署工具所使用的 YAML 配置文件,或者一个 XML 数据集需要用更易读的格式进行调试排查。

转换路径以 JSON 作为中间表示。XML 先被解析为一棵树,按可配置的属性和命名空间约定转为 JSON 对象,再序列化为 YAML。JSON 中间层虽然看不见,却有两方面的影响。第一,它意味着本工具采用的属性约定与 XML 转 JSON 工具使用的约定一致——@attr 前缀是默认选项,也是互操作性最广的选择。第二,它也意味着 XML 转 JSON 映射中存在的任何限制(混合内容处理、命名空间冲突行为)同样适用于 YAML 输出。本工具不会在 XML 格式固有的限制之外引入新的限制。

最后的交接环节:如果 YAML 输出要进入 Kubernetes 或 Ansible 的部署流程,部署前先用目标工具的 linter 校验(kubectl apply --dry-runansible-playbook --syntax-check)。如果输出缩进很深、不易扫读,可以把叶值切换到流格式以压缩视觉上的嵌套深度。如果需要反向转换——YAML 转 XML——本站的 YAML 转 XML 工具沿用相同的可配置约定,可以无缝完成往返转换。

广告

使用方法

  1. 粘贴你的 XML

    把 XML 内容拖入输入区。解析器会校验良构性,并就地显示错误。合法的 XML 会先转换为中间的 JSON 表示,再输出为 YAML。

  2. 选择 YAML 格式选项

    默认缩进是 2 空格。如需符合风格指南,可切换到 4 空格。在块格式(默认,可读性更好)和流格式(紧凑、使用内联括号)之间切换输出风格。

  3. 复制或下载 YAML

    把 YAML 复制到剪贴板,或下载为 .yaml 文件。输出符合 YAML 1.2 规范,在任何支持 YAML 语法高亮的编辑器中都能直接打开。

常见问题

XML 属性如何转换为 YAML?

默认情况下,XML 属性会以 `@` 为前缀,以便与子元素区分。`<book id="123"><title>Dune</title></book>` 会变成一个键为 `@id` 和 `title` 的 YAML 映射。设置中还提供其他属性约定(单独的 `_attributes` 键,或直接剥离)。

转换器会保留 XML 元素的顺序吗?

会。YAML 1.2 规范中映射保留键的顺序,转换器会按照源 XML 中出现的顺序输出键。这一点对配置文件很关键,因为某些配置文件中键的顺序携带语义信息。

XML 命名空间在 YAML 输出中如何处理?

默认会剥除命名空间前缀,仅用元素的本地名标识。如果来自不同命名空间的两个元素具有相同的本地名,后出现的元素会覆盖先出现的元素。开启「保留前缀」模式后,它们可以作为不同的键保留下来。

XML 注释在转换过程中会怎样?

XML 注释会被丢弃。YAML 支持以 `#` 开头的注释,但 XML 注释的位置无法可靠地映射到 YAML 中等价的位置。可以转换完结构之后,再手工为 YAML 添加注释。

限制说明

  • 不输出 YAML anchor 和 alias重复的 XML 结构会被转换为重复的 YAML 映射。转换器不会检测重复结构并输出 YAML anchor(`&anchor`)与 alias(`*anchor`)。如果需要 DRY 风格的配置文件,请在转换之后手工添加 alias。
  • 超出 5 个标准实体的 XML 实体引用会失败只有 `&amp;`、`&lt;`、`&gt;`、`&apos;` 和 `&quot;` 这五个实体会被解码。DTD 中定义的自定义实体不会被展开,遇到它们会导致解析错误。
  • CDATA 与文本节点会被静默合并CDATA 段和普通文本节点会被合并为 YAML 输出中的单个字符串值。原本包裹在 CDATA 中的值与普通文本值之间的区别会丢失。

平台说明

macOS
命令行场景下,`yq -p xml -o yaml input.xml` 可以完成转换。如果只是偶尔做一次性转换,专门通过 Homebrew 安装 yq 反而比任务本身更麻烦,这种情况下浏览器工具更合适。
Linux
命令行等价命令:`xq . input.xml`(通过 pip install yq 安装)可以把 XML 经由 jq 转成 YAML。从聊天窗口或文档页粘贴 XML 做临时转换时,浏览器工具是更顺手的选择。
Web
所有处理全部在客户端完成。XML 内容从不上传。页面加载完成后即可离线使用。
广告

相关工具

广告