Java yaml与xml在对象图反序列化方面的优缺点是什么?
该用例是以文本格式对复杂对象图进行长期序列化。如果使用YAML,则可能会有少量字节通过网络传输。我认为这还不够重要,但在某些情况下,这可能是相关的。我还认为YAML在文本编辑器中更容易阅读和使用,但这确实有点主观,如果这不是一个正常的使用场景,也没什么关系 如果带宽不是一个因素,并且您不会经常在文本编辑器中使用YAML/XML,那么我认为使用哪一种并不重要。简短回答Java yaml与xml在对象图反序列化方面的优缺点是什么?,java,xml,serialization,yaml,Java,Xml,Serialization,Yaml,该用例是以文本格式对复杂对象图进行长期序列化。如果使用YAML,则可能会有少量字节通过网络传输。我认为这还不够重要,但在某些情况下,这可能是相关的。我还认为YAML在文本编辑器中更容易阅读和使用,但这确实有点主观,如果这不是一个正常的使用场景,也没什么关系 如果带宽不是一个因素,并且您不会经常在文本编辑器中使用YAML/XML,那么我认为使用哪一种并不重要。简短回答 如果您希望人类创建/读取文档(配置文件、报告等),那么您可以考虑YAML,否则选择XML(用于机器对机器通信)。 长话短说 长度
如果您希望人类创建/读取文档(配置文件、报告等),那么您可以考虑YAML,否则选择XML(用于机器对机器通信)。 长话短说 长度 XML和YAML大致相同。好的XML库可以跳过所有空格,而对于YAML则是必需的。复杂的YAML包含大量缩进空间(不要使用制表符!)
网络故障 YAML文档的一部分通常是有效文档,因此如果YAML文档不完整,则无法自动检测它。XML解析器将始终检查文档是否至少格式良好,并且可以根据模式自动检查有效性 语言支持 许多主要编程语言都支持XML和XML 常识 您不需要向开发人员(甚至初级开发人员)解释什么是XML。YAML还没有被广泛使用 模式 使用XML,生产者和消费者都可以在模式上达成一致,以建立可靠的数据交换格式 语法 XML非常丰富:名称空间、实体、属性 外部依赖 Java和Python在标准库中支持XML。YAML要求这些语言具有外部依赖性 成熟 XML规范比较古老,而且坚如磐石;然而,YAML仍在建设中。YAML 1.1包含不一致性(甚至有一个方法来维护错误列表) XSLT如果您需要将XML文档转换为另一种格式(XML、HTML、YAML、PDF),您可以使用XSLT,而对于YAML,您必须编写一个程序。我同意:YAML更具可读性,并且似乎非常适合开发人员读/写配置文件。但是机器对机器的通信几乎没有什么好处。此外,对于文本标记(xml的传统优势,如xhtml、docbook),xml更好 特别是对于对象序列化,我想不出使用YAML的好理由 事实上,我建议改为考虑JSON:它基于对象(或者结构,因为没有行为)模型,而不是层次(xml)或关系(SQL)模型。因此,它更自然地适合对象数据。但是XML也可以很好地工作,并且有很多好的工具
最后一点:术语“长期”和“对象序列化”不能混用。后者意味着紧密耦合:对象会发生变化,序列化也会发生变化。实际对象序列化不应用于存储数据,数据绑定/映射更合适。但是,您可能是在“使用方便的对象包装器存储/恢复数据”的意义上使用序列化;如果是这样,那没关系。XML有xpath和xquery 但是YAML有复杂的键,可以使用别名(&*语法)将一个值复制到多个位置 我认为亚马尔的优势不是他们说的人类可读性。。。我可以很好地阅读格式正确的XML 事实上,YAML的优势在于人类的书写能力。如果您在iPhone上,在构建数据模型时快速输入一些数据,那么YAML更容易输入。别名真是太棒了 然后你可以把它转换成任何东西 YAML更高级的特性,如严格的键入和标记,我从未使用过。YAML的家伙们目前正在讨论发行一个“微型YAML”来与JSON竞争,对于我们这些使用它的人来说,基本上就像使用别名的更干净的JSON一样
但是,正如其他人指出的那样,XML作为一种标记语言更好,在这种语言中,您希望直观地区分数据的哪些部分对最终用户可见 +1,尽管我不同意网络故障:在解析器参与之前,有足够多的层能够检测错误,即使它们失败,解析器也只会检测破坏xml良好格式的少数错误(基本上是:弄乱了,=,'或标记名)。