现在有一堆xml文件,我要通过一定的规则将每个xml文件里的数据筛选出来.筛选数据分有效的无效的.筛选后有效数据的无效数据各另存为一个xml文件.规则也是xml文件.规则有:节点不能不存在,节点值不能为空,节点值长度有限制(根据规则来,规划可以配置),节点值值前缀/后缀/值包含/值非前缀/值非后缀/值不包含,值是否区分大小写,以及支持正则表达式匹配.每个节点的数据都要根据规则去匹配,如果匹配成功,写入成功的xml,否则写入失败的xml且添加一个失败理由的节点,并说明失败理由.我现在的做法是首先将要筛选的xml数据读取至一个DataSet里并复制两个同样结构的dataset用以分别保存筛选成功后的数据,再循环DataSet里的所有行,循环体里再循环每个规则(则名是和节点名一样的)看是否匹配成功,匹配成功的行放入(用ImportRow方法)成功的dataset,否则放入匹配失败的dataset里,直到循环完成后,再将两个dataset输出保存成xml文件.现在这种做法一万条数据用时大约330ms,我觉得此种方式效率不太好(要循环所有行,再循环规划,相当于行里再循环所有列),各位有没有更好的方法来做.我尝试用DataTable.select()来做,但是sql不支持正则和大小写之类的
关于正则表达式和大小写,大小写是支持的,需要把IsCaseSensitive(大概是这个)这个属性设一下。但它只支持数据的大小写,不支持架构的大小写。正则表达式在select()方法里面是不支持的。