【发布时间】:2012-06-22 09:30:31
【问题描述】:
现在,我有许多描述所有游戏对象的 XML 及其属性集。例如:
<gameObject id="commonEnemy">
...
<data>
<life>100</life>
<speed>12</speed>
</data>
<tags>
<tag>KILLABLE</tag>
<tag>COLLIDABLE</tag>
</tags>
...
</gameObject>
所有文件都有不同的“组件”(如上例中的数据和标签)。这些文件有近数千个,占用了大量磁盘空间。但是由于某些 gameObject "share" 某些属性与其他人,我可以创建一个 default 文件并从中继承其他文件,从而只更改什么是需要的。比如:
<gameObject id="badassEnemy" import="commonEnemy">
...
<data>
<life>200</life> <!-- I'm increasing the life -->
</data>
<tags>
<tag>KILLABLE</tag>
<!-- And is not more collidable. Totally weird XML syntax, but just to make a point -->
remove <tag>COLLIDABLE</tag>
</tags>
...
</gameObject>
但据我所知,XML默认不支持继承,对合并节点也不是很友好。
我需要的是某种格式,它允许我:
- 从一个对象继承
- 添加简单类型和数组类型
- 修改简单类型和数组类型
- 删除简单类型和数组类型
数组应该被索引或类似的东西访问。 我查看了 diff 格式,但我不能使用它,因为如果我更改默认类型,所有的孩子都会被破坏。 我知道自定义二进制文件是节省磁盘空间的方法,但对象必须可以用简单的记事本应用程序编辑。 我还查看了 JSON 和 YAML,它们似乎都没有考虑继承。
是否有一些数据格式可以让我做我想做的事?还是我需要自己写数据格式和解析器?
【问题讨论】:
-
你在这方面有什么收获吗?我有同样的问题,但必须使用 XML,我们有几个动态生成的 XML 文档,它们共享许多公共内容,希望能够覆盖基本文档。
标签: xml actionscript-3 inheritance serialization xml-serialization