我们知道XML语法有哪些可用的替代方法?

时间:2020-03-05 18:49:55  来源:igfitidea点击:

对我而言,意味着:

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

我也希望它尽可能地接近XML,即必须同时支持属性和属性。因此,请不要使用YAML。目前,我只想到一种匹配的语言JSON。我们还知道其他选择吗?

解决方案

回答

JSON是一个很好的选择,并且有多种语言的工具。由于它是本机javascript,因此在Web客户端中非常容易使用。

回答

我建议使用JSON ...,但是既然我们已经提到过JSON,也许我们应该看看Google协议缓冲区。

编辑:协议缓冲区被制成以编程方式使用(有c ++,java,python ...的绑定),因此它们可能不适合目的。

回答

我认为Clearsilver是一个很好的选择。他们甚至在这里有一个比较页面和使用它的项目列表

回答

杰夫在这里和这里都写了这个。那应该可以入门。

回答

需求有点不可能。.我们想要接近XML的内容,但可能拒绝没有尖括号(YAML)的最接近的等效内容。

我不喜欢它,为什么不仅仅使用XML?我们不需要真正阅读XML(我想除了调试之外),还有很多关于它的工具。

几乎所有非XML的东西都不会得到广泛使用,因此将减少对工具的支持。

JSON大概是等效的,但它几乎是不可读的..但是,我们也不必真正读取它(将其加载到我们使用的任何语言中,都应该转换为本机数组/ dict / variables /任何)。

哦,我确实发现JSON比XML解析的要好得多:我在Javascript中使用了它,并且在一个命令中使用了simplejson Python模块,并将其很好地转换为本地Python dict或者Javascript对象(因此命名!)

回答

如果我们对尖括号过敏,那么我只知道JSON,HDF(ClearSilver)和OGDL。

经过一番谷歌搜索,我还在这里找到了替代方案的列表:
http://web.archive.org/web/20060325012720/www.pault.com/xmlalternatives.html

回答

AFAIK,JSON和YAML在数据结构方面完全等效。 YAML的括号,引号和内容很少。因此,我看不出我们是如何拒绝一个并保留另一个的。

另外,我没有看到XML的尖括号比JSON的方括号,大括号和引号更不容易被人理解。

回答

YAML是JSON的100%超集,因此拒绝YAML然后考虑使用JSON是没有意义的。 YAML可以完成JSON的所有工作,但是YAML可以提供更多的功能(例如引用)。

除了使用DTD验证文档之外,我无法想到XML可以执行YAML无法完成的任何事情,以我的经验,这从来都不值得开销。但是,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完全消除了这种混乱。