XML的语法很简单,当然缺点就是废话太多,经常一个节点名比属性名长了几倍有余,还得写两遍,简直要死。
C5对XML的处理方法大概有两种(也可能是一种,不清楚它内部怎么弄的)。我们还是以刚才的CIV5Traits.xml这个文件为例。在这个文件中,C5将XML文件会转换成SQL语句,然后插入数据库中。
这类XML文件的根节点一般是GameData。GameData的子节点如果是Table,那么这个节点(及其子节点)会被翻译为创建表的语句,比如第5行到第100行,大概会翻译为:

大多数情况下,你不用像这样自己建立一个新表,尤其只是改改XML的话。
如果GameData的子节点是别的,比如叫Traits

那么它相当于对Traits表进行什么操作。这种节点的子节点经常是Row,也有Update,Replace,InsertOrAbort。比如这里是Row,它也会翻译成相应的SQL语句,大概是:
INSERT INTO Tratis(ID,Type,Description,ShortDescription,GreatPeopleRateModifier) VALUES(*TRAIT_PHILOSOPHICAL*,*NULL*,*NULL*,100);
顺便说一句,C5的数据库管理用的是SQLITE,语法和MySQL之类的有些区别。
很多MOD洋洋洒洒写了一堆XML语句,所做的工作基本都是往数据库里插入数据。
C5运行时的数据库在这里:

我们可以用某个数据库产看软件看看,比如Traits表:

可以看到第一条数据就是刚才那个XML语句转化过来的