xml python

来源:互联网 发布:那曲网络怎么样 编辑:程序博客网 时间:2024/05/19 13:42
xml.dom 解析XML的API描述minidom.parse(filename)加载读取XML文件doc.documentElement获取XML文档对象node.getAttribute(AttributeName)获取XML节点属性值node.getElementsByTagName(TagName)获取XML节点对象集合node.childNodes #返回子节点列表。node.childNodes[index].nodeValue获取XML节点值node.firstChild#访问第一个节点。等价于pagexml.childNodes[0] doc = minidom.parse(filename)doc.toxml('UTF-8')返回Node节点的xml表示的文本Node.attributes["id"]a.name #就是上面的 "id"a.value #属性的值 #!/usr/bin/env python"""*author:czhipeng*Date:2013/08/29"""from xml.dom import minidomimport fileinputimport timeclass parseXMLV(object):    def __init__(self,ip,javaEnv):        self.ip=ip        self.javaEnv=javaEnv    def generate_coreXml(self):        impl=minidom.getDOMImplementation()        dom=impl.createDocument(None,'configuration',None)        root=dom.documentElement        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('hadoop.tmp.dir')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('/hadoop/tmp')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('fs.default.name')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('hdfs://'+self.ip+':9000')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('hadoop.proxyuser.root.hosts')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip)        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('hadoop.proxyuser.root.groups')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('*')        nameE.appendChild(nameT)        property.appendChild(nameE)               f=open('core-siteTmp.xml','a+')        dom.writexml(f,addindent=' ',newl='\n')        f.close()                dst=file('core-site.xml','wa+')        inlines=fileinput.input(files=('core-siteTmp.xml'))        for inline in inlines:           if fileinput.lineno()!=3:               dst.write(inline)        dst.close()        f.close()    def generate_hdfsXml(self):        impl=minidom.getDOMImplementation()        dom=impl.createDocument(None,'configuration',None)        root=dom.documentElement        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.replication')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('3')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.name.dir')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('file:/hadoop/hdfs/name')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('final')        nameT=dom.createTextNode('true')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.federation.nameservice.id')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.backup.address.ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':50100')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.backup.http-address.ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':50105')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.federation.nameservices')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.rpc-address.ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':9000')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.rpc-address.ns2')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':9000')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.http-address.ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':23001')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.http-address.ns2')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':13001')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.dataname.data.dir')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('file:/hadoop/hdfs/data')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('final')        nameT=dom.createTextNode('true')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.secondary.http-address.ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':23002')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.secondary.http-address.ns2')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':23002')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.secondary.http-address.ns1')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':23003')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('dfs.namenode.secondary.http-address.ns2')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':23003')        nameE.appendChild(nameT)        property.appendChild(nameE)        f=open('tmphdfssite.xml','a+')        dom.writexml(f,addindent=' ',newl='\n')        f.close()        dst=file('hdfs-site.xml','wa+')        inlines=fileinput.input(files=('tmphdfssite.xml'))        for inline in inlines:           if fileinput.lineno()!=3:               dst.write(inline)        dst.close()        f.close()    def addJava(self):        f=open("hadoop-env.sh",'a+')        f.write(self.javaEnv)        f.close()          def generate_mapredXml(self):        impl=minidom.getDOMImplementation()        dom=impl.createDocument(None,'configuration',None)        root=dom.documentElement        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('mapreduce.framework.name')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('yarn')        nameE.appendChild(nameT)        property.appendChild(nameE)        f=open('tmpmapredsite.xml','a+')        dom.writexml(f,addindent=' ',newl='\n')        f.close()                dst=file('mapred-site.xml','wa+')        inlines=fileinput.input(files=('tmpmapredsite.xml'))        for inline in inlines:           if fileinput.lineno()!=3:               dst.write(inline)        dst.close()        f.close()    def generate_yarnXml(self):        impl=minidom.getDOMImplementation()        dom=impl.createDocument(None,'configuration',None)        root=dom.documentElement        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.resourcemanager.address')        nameE.appendChild(nameT)        property.appendChild(nameE)               nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':18040')        nameE.appendChild(nameT)        property.appendChild(nameE)       '''        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.resourcemanager.nodes.exclude-path')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('/home/hadoop/hadoop/etc/hadoop/node-exclude.list')        nameE.appendChild(nameT)        property.appendChild(nameE)'''        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.resourcemanager.scheduler.address')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':18030')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.resourcemanager.webapp.address')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':18088')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.resourcemanager.resource-tracker.address')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':18025')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.resourcemanager.admin.address')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode(self.ip+':18141')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.nodemanager.aux-services')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('mapreduce.shuffle')        nameE.appendChild(nameT)        property.appendChild(nameE)        property=dom.createElement('property')        root.appendChild(property)        nameE=dom.createElement('name')        nameT=dom.createTextNode('yarn.nodemanager.aux-services.mapreduce.shuffle.class')        nameE.appendChild(nameT)        property.appendChild(nameE)        nameE=dom.createElement('value')        nameT=dom.createTextNode('org.apache.hadoop.mapred.ShuffleHandler')        nameE.appendChild(nameT)        property.appendChild(nameE)        f=open('yarn-site.xml','w+')        dom.writexml(f,addindent=' ',newl='\n',encoding='utf-8')        f.close()                if __name__=="__main__":    t=parseXMLV("10.108.39.104","export JAVA_HOME=/usr/java/jdk1.7.0_25")    start=time.time()    t.generate_yarnXml()    t.generate_coreXml()    t.addJava()     t.generate_mapredXml()     t.generate_hdfsXml()    stop=time.time()    print stop-start #3.376ms


不生成 只替换:

#!/usr/bin/env python'''name:chenzhipengdate:2013-0904'''import osimport reimport timeclass fileConfig(object):    def __init__(self,ip,javaEnv):        self.ip=ip        self.javaEnv=javaEnv    def configYarnSite(self):        f=open("tmpYarnSite.xml","r+")        open("yarn-site.xml",'w').write(re.sub(r'&ip&',self.ip,f.read()))            f.close()    def configHdfsSite(self):        f=open("tmpHdfsSite.xml","r+")        open("hdfs-site.xml",'w').write(re.sub(r'&ip&',self.ip,f.read()))        f.close()    def addJava(self):        f=open("hadoop-env.sh",'a+')        f.write(self.javaEnv)        f.close()    #map-site.xml no alter        def configCoreSite(self):        f=open("tmpCoreSite.xml","r+")        open("core-site.xml",'w').write(re.sub(r'&ip&',self.ip,f.read()))        f.close()    if __name__=="__main__":    t=fileConfig("10.108.39.104","export JavaHome=")    start=time.time()    #t.configYarnSite()    #t.configHdfsSite()    #t.addJava()    t.configCoreSite()    stop=time.time()    print stop-start


原创粉丝点击