繁体   English   中英

文件格式

[英]Document format

我正在和我的朋友一起玩游戏。 现在有关于关卡的问题。 第一个版本是使用XML构建的。 我不喜欢它有几个原因:数据太多,我们使用的解析器存在一些问题。 我们正在使用Boost,所以我决定看看json-parser

结构更小,更优化。 您怎么看,从功能强大的xml更改为简单的json并不是太激进了吗? json结构能力是否足以组织具有大量额外数据和属性的大型游戏级别?

我在用python编写的webapps中经常使用JSON--对于XML和JSON都有很好的解码器。 确实没有太大的区别,除了XML占用更多的空间,但更具可读性。 JSON看起来几乎就像一个Python字典,所以这是有道理的。 JSON在Web上更普遍的主要原因可能是JSON-RPC相当好,而XML-RPC却被认为不够而SOAP太沉重。

所以这取决于你是否能找到一个好的JSON解码器,这足以满足你的需求。 我不经常使用Boost / C / C ++。

我认为JSON比XML更适合面向数据的用例(比如你的假设)。 XML作为标记语言很好; 或者当必须混合和匹配多个词汇表时。 我没有发现XML对这种用例更强大; 并且没有理由不能将您想要的任何数据映射到JSON结构。 使用XML,很多功能来自处理工具和XML词汇表,而不是核心标记语言本身相当简单。

有可能XML和JSON实际上都适合你,所以也许只看看哪个库有更好的开发风格库。

如果您已经在使用将其放入DOM对象的阅读器,那么除非您最终在此过程中更改数据格式,否则我认为从XML切换到JSON是不值得的。 特别是如果您使用编辑器创建程序数据,因为与JSON相比,您将拥有更好的工具来编辑XML文档。 这些DOM对象的解析时间很可能在实现之间没有太大差异,但是如果这是一个问题,那么JSON实例DOM对象可能会占用更少的空间。 您将能够以XML或JSON格式存储所需的任何内容,因此不必担心。 作为一种级别描述语言,我将使用XML,因为我可以定义一个架构,并且如果需要的话,更容易手动编辑。 此外,您可能希望能够在读取数据时有效地创建这些级别,并且如果不尽快需要,则忽略所有额外的实例数据。 XML SAX或请求解析器将是理想的选择。

既然我的简短回答已经结束,我将在信息上漫步一些,这些信息可能会帮助您更好地自己决定。

您想如何访问数据? 您是否只想全部阅读并有一个大对象可以访问,还是只需要查看一次数据即可基于该信息创建对象? 您是否对解析期间的性能有任何担忧,以及对读入的新信息有多快的响应速度? 您的数据格式可能会发生很大变化吗? 您是否想提供一个标准,可以在您的应用程序之外共享此信息? 我正在使用哪种编程语言? 有些语言有很好的JSON与XML工具,具体取决于语言。

鉴于JSON或XML的唯一选择,我将根据与应用程序相关的用例来决定。

如果我需要在我的解析器中调整性能并且具有可以描述和共享的非常结构化的格式并且不太可能经常更改,我会使用XML。 我可以使用模式来描述数据结构要求,这将允许其他人轻松地支持我的数据文件。 如果我的信息很大,我也会使用XML,并且我希望有机会以块的形式解析数据并将它们直接存储到对象中,这些对象最终会比使用通用DOM模型和解析器更小。 我会使用SAX推读器或流读取器,如果我需要在读入时响应信息,我可以使用它。有许多好的库可以快速,轻松地为XML做到这一点。 如果我需要经常手动编辑数据或出于调试目的而打印出来,则XML文档已经采用了这种格式。

如果我需要保存实例文档空间并且我想要一个DOM类型对象,我会使用JSON。 如果我有两个应用程序只是尝试传递Python和Java等数据,我会使用JSON,因为它可以使用setter和getter将这些读取到实例对象中而没有复杂的framwework,即使这可能会使事情变得缓慢。 如果我仅需要序列化和传输数据对象,那么我将选择JSON,而不是XML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM