XML的语法很简单,当然缺点就是废话太多,经常一个节点名比属性名长了几倍有余,还得写两遍,简直要死。
C5对XML的处理方法大概有两种(也可能是一种,不清楚它内部怎么弄的)。我们还是以刚才的CIV5Traits.xml这个文件为例。在这个文件中,C5将XML文件会转换成SQL语句,然后插入数据库中。
这类XML文件的根节点一般是GameData。GameData的子节点如果是Table,那么这个节点(及其子节点)会被翻译为创建表的语句,比如第5行到第100行,大概会翻译为:
![](https://imgsa.baidu.com/forum/w%3D580/sign=a71661670955b3199cf9827d73a88286/6d89d8fe9925bc3154b52cfe5ddf8db1ca137063.jpg)
大多数情况下,你不用像这样自己建立一个新表,尤其只是改改XML的话。
如果GameData的子节点是别的,比如叫Traits
![](https://imgsa.baidu.com/forum/w%3D580/sign=70e41203b019ebc4c0787691b227cf79/a082a125bc315c603d7d46898eb1cb1348547763.jpg)
那么它相当于对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运行时的数据库在这里:
![](https://imgsa.baidu.com/forum/w%3D580/sign=0080ab4fe8c4b7453494b71efffd1e78/d95984315c6034a8540a95e7c813495408237663.jpg)
我们可以用某个数据库产看软件看看,比如Traits表:
![](https://imgsa.baidu.com/forum/w%3D580/sign=b8ccf392b44543a9f51bfac42e168a7b/fc4d646034a85edf8664d3454a540923dc547563.jpg)
可以看到第一条数据就是刚才那个XML语句转化过来的