Aller à la documentation de ce fichier.00001
00002
00003
00004 import xml.dom.minidom
00005
00006
00007
00008
00009
00010 class Sconet:
00011
00012
00013
00014
00015
00016
00017 def __init__(self, file):
00018 if type(file)==type(""):
00019 file=open(file,"r")
00020 self.donnees=xml.dom.minidom.parse(file)
00021 self.makeCompact()
00022
00023
00024
00025
00026
00027 def makeCompact(self):
00028 self.nullTexts={}
00029 self.elementsWalk(self.donnees.documentElement, self.collectNullTexts)
00030 for el in self.nullTexts.keys():
00031 for e in self.nullTexts[el]:
00032 el.removeChild(e)
00033
00034 def collectNullTexts(self,el):
00035 self.nullTexts[el]=[]
00036 for e in el.childNodes:
00037 if e.nodeType==e.TEXT_NODE and e.data.strip()=="":
00038 self.nullTexts[el].append(e)
00039
00040
00041
00042
00043
00044 def collectClasses(self):
00045 self.classes=set()
00046 self.elementsWalk(self.donnees.documentElement, self.collectOneClass)
00047 return self.classes
00048
00049
00050
00051
00052
00053 def collectOneClass(self,el):
00054 if el.nodeName.lower()=="structure":
00055 if el.getElementsByTagName("TYPE_STRUCTURE")[0].firstChild.data=="D":
00056 self.classes.add(el.getElementsByTagName("CODE_STRUCTURE")[0].firstChild.data)
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 def elementsWalk(self, el, proc):
00068 proc(el)
00069 for e in el.childNodes:
00070 self.elementsWalk(e, proc)
00071
00072 def __str__(self):
00073 return self.donnees.toprettyxml(indent=" ",encoding="utf-8")
00074
00075
00076 if __name__=="__main__":
00077 s=Sconet("SCONET_test.xml")
00078
00079 print s.collectClasses()
00080