gim、mtg、scn和sfx均为XML格式文件,关键数据、过滤等方法都是一样的,以下为规则举例。

1.png
1.读取XML的dom元素 name: gim文件的submesh数量不能大于5 xpath: * /SubMesh.{dom} condition: ['满足表达式', 'len(d) <= 5'], rpath: .* gim$,

规则说明: rpath: . gim$,过滤满足正则的文件,实际执行会在整个检查目录内进行文件过滤:re.match(rpath,文件路径),满足条件的文件会继续执行。
xpath:
/SubMesh.{dom} ,提取文件关键数据,XML文件格式如上图所示。SubMesh在第二层级,*/SubMesh 指向 标签,同理也可以用root/SubMesh过滤,提前dom元素,使用固定方法.{dom},拿到SubMesh下所有的节点。上图xpth拿到的节点数据,data=[],如果有2个SubMesh,则data = [,]。
condition: ['满足表达式', 'len(d) <= 5'],对应拿到的data列表,condition所填的内容为列表中内一个单向需要满足的条件。上图中SubMesh的子节点个数为5,满足规则的条件。

2.读取XML属性的值以及二级文件过滤方法 name:gim关联文件检查(读取属性的值) rpath: . gim$, xpath: / * / FileName:value filter:artfunc_check_combine_gimsfx condition: ['满足表达式', 'len(d) > 0'], func_str:
2.png

规则说明:
rpath: . gim$过滤出gim文件
xpath:
/ * /FileName:value,读取属性的值,可以使用模糊匹配的方式找到我们关心的属性FileName,FileName:value,获取FileName下value属性的值。但我们拿到的数据是一个文件地址,我们要对拿到的文件地址进行二次解析有两种方法,这里选择的是filter
filter:artfunc_check_combine_gimsfx,通过对filter填写自定义函数,可以对拿到的数据进行二次解析,这里的目的就是判断当前目录下是否存在关联文件,如果不存在则这条规则不通过。

3.XML文件标签的值
name:gim文件取值(tag下的数值) rpath: .* gim$,
xpath: * /TEST1.name
condition:['满足表达式', 'len(d) > 1'],

规则说明:
rpath . gim$, 过滤gim文件
xpath:
/TEST1.name,我们要获取TEST1下面name的值,可以*/TEST1.name,拿到对应的值
condition:['满足表达式', 'len(d) > 1'],,根据拿到的值去自定义规则条件