Go to the documentation of this file.00001 from xml.dom.minidom import parse,parseString,getDOMImplementation,Node
00002
00003 class cacheconfigParser(object):
00004 def __init__(self):
00005 self.__configstr=''
00006 self.__configfile=''
00007
00008 self.__parameterDict={}
00009 def handleFrontierConnect(self,dom):
00010
00011 nodelist=dom.getElementsByTagName('frontier-connect')[0].childNodes
00012
00013 for node in nodelist:
00014 if node.nodeType!=Node.TEXT_NODE and node.nodeType!=Node.COMMENT_NODE:
00015 tagname=node.tagName
00016 attrs=node.attributes
00017 for attrName in attrs.keys():
00018 attrNode=attrs.get(attrName)
00019 attrValue=attrNode.nodeValue
00020 if self.__parameterDict.has_key(tagname):
00021 self.__parameterDict[tagname].append((attrName,attrValue))
00022 else:
00023 valuelist=[]
00024 valuelist.append((attrName,attrValue))
00025 self.__parameterDict[tagname]=valuelist
00026 def parse(self,filename):
00027 """
00028 Parse an XML file by name
00029 """
00030 dom=parse(filename)
00031 self.handleFrontierConnect(dom)
00032 dom.unlink()
00033 def parseString(self,strbuff):
00034 dom=parseString(strbuff)
00035 self.handleFrontierConnect(dom)
00036 dom.unlink()
00037 def proxylist(self):
00038 return self.__parameterDict['proxy']
00039 def serverlist(self):
00040 return self.__parameterDict['server']
00041 def parameterdict(self):
00042 return self.__parameterDict
00043 if __name__ == '__main__':
00044 mydocstr="""<frontier-connect><proxy url="https://cmst0frontier.cern.ch:3128"/><proxy url="https://cmst0frontier.cern.ch:3128"/><proxy url="https://cmst0frontier1.cern.ch:3128"/><proxy url="https://cmst0frontier2.cern.ch:3128"/><server url="https://cmsfrontier.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier1.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier2.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier3.cern.ch:8000/FrontierInt"/><server url="https://cmsfrontier4.cern.ch:8000/FrontierInt"/></frontier-connect>"""
00045 p=cacheconfigParser()
00046 p.parseString(mydocstr)
00047 print 'proxies'
00048 print p.proxylist()
00049 print 'servers'
00050 print p.serverlist()
00051 print 'parameterdict'
00052 print p.parameterdict()
00053
00054 p.parse('/afs/cern.ch/user/x/xiezhen/w1/site-local-config.xml')
00055 print 'proxies'
00056 print p.proxylist()
00057 print 'servers'
00058 print p.serverlist()
00059 print 'parameterdict'
00060 print p.parameterdict()