新领导给的小任务,业余时间完成,嗯,业余时间。
还好任务很简单:从XML文件中挑选出具有某个标识的节点。
核心功能
核心功能:解析xml,用正则匹配节点的一个属性,如果匹配成功,保存该节点。
xml解析库的选择
python解析xml,度娘搜下去(对,我作为一个前程序员不咋用谷歌,这大概就是我成为前程序员的原因吧),最常见的是minidom,minidom需要逐层解析,本需求要解析的xml结构好像不止一种,用这个库比较费力,排除。
后来发现了elementTree,这个库存在迭代器,可以从根节点向下迭代,找到想找到节点,而且使用简单,就是它。
为了试验功能,从网上随便找了个小xml,为了保证能够查找出所有匹配的结果,粘了个假的user3,age属性和user1相同,其他均不同。
admin
admin@qq.com
23
user
user@qq.com
22
admia
admia@qq.com
23
查找匹配节点并保存
def findblocks(self):
for i in self.root.iter(self.blockType):
desc = i.find(self.type).text
if desc :
if re.search(self.reStr,desc):
self.saveMatchCfg(i)
def saveMatchCfg(self,matchNode):
self.resultRoot.append(matchNode)
将新的tree写入xml
def saveXML(self):
tree = ET.ElementTree(self.resultRoot)
tree.write(self.resultFile, encoding="utf-8", xml_declaration=True)
用写死的参数测试,基本功能已经能满足,在当使用 age 23 来过滤时能匹配到1,3。
核心功能完成。
友好性和可