xml - 您知道 XML 语法有哪些可用的替代方法?

标签 xml syntax yaml

<分区>

对我来说可用意味着:

  • 它正在现实世界中使用
  • 它有工具支持。 (至少是一些简单的编辑器)
  • 它具有人类可读的语法(请不要使用尖括号)

我还希望它尽可能接近 XML,即必须支持属性和属性。所以,没有 YAML请。目前,我只想到一种匹配的语言 - JSON .你知道任何其他选择吗?

最佳答案

YAML 是 JSON 的 100% 超集,因此拒绝 YAML 然后考虑 JSON 是没有意义的。 YAML 可以做 JSON 可以做的一切,但 YAML 也提供了更多(比如引用)。

我想不出任何 XML 可以做而 YAML 不能做的事情,除了用 DTD 验证文档,根据我的经验,这从来都不值得开销。但是 YAML 比 XML 更快、更容易输入和阅读。

至于属性或属性,如果你仔细想想,它们并没有真正“添加”任何东西......它只是一种符号快捷方式,将一些东西写成节点的属性而不是将它放在自己的子节点中.但如果您喜欢这种便利,您通常可以使用 YAML 的内联列表/哈希来模拟它。例如:

<!-- XML -->
<Director name="Spielberg">
    <Movies>
        <Movie title="Jaws" year="1975"/>
        <Movie title="E.T." year="1982"/>
    </Movies>
</Director>


# YAML
Director: 
    name: Spielberg
    Movies:
      - Movie: {title: E.T., year: 1975}
      - Movie: {title: Jaws, year: 1982}

对我来说,不必为每个节点标记编写两次的奢侈,再加上所有尖括号垃圾的自由,使 YAML 成为首选。实际上,我也喜欢缺少正式的标记属性,因为在我看来,这总是像 XML 的灰色区域,它不必要地为本质上相同的概念引入了两组语法(在编写和遍历时)。 YAML 完全消除了这种混淆。

关于xml - 您知道 XML 语法有哪些可用的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492/

相关文章:

python - 在python中解析嵌套的xml

java - 如何在 Java 中使用 html 内容类型在 JTextPane 中打印 HTML 标签

java - 如何仅编辑开始标签或结束标签

xml - 我们可以将 JsPlumb 流程图导出为 JSON 或 XML 吗?

haskell - 为什么 Haskell 类型签名声明有多个箭头?

json - YAML 作为 JSON 超集和 TAB 字符

ruby - 在 YAML 变量中包含 jekyll/liquid 模板数据?

ruby-on-rails - Ruby 救援和最佳实践语法

python - 为什么允许在 for 循环中使用列表订阅?

vim - 使用vim通过(增加)编号多次粘贴 block