替换XML里面的特定节点

方法一:python脚本

http://www.python.org/ftp/python/2.7/

1、tar zxvf Python-2.7.tar
2、cd Python-2.7
3、./config
4、make
5、make install

替换XML里面的特定节点 代码
import xml.etree.ElementTree  as  ET
import os
import sys

def update_file(input, output):
    tree 
=  ET.parse(input)
    doc 
=  tree.getroot()
    acls 
=  doc.findall( ' .//acl ' )
    
for  acl  in  acls:
        
if  (cmp(acl.attrib. get ( ' user ' ),  ' scm_controller ' ==   0 ):
            acl.clear()
            acl.
set ( ' user ' ' scm_controller ' )
            a 
=  ET.Element( ' modified_by ' )
            a.text 
=   ' hua '
            acl.append(a)
            a 
=  ET.Element( ' modified_date ' )
            a.text 
=   ' 2010.07.13.12.12.18 '
            acl.append(a)
            a 
=  ET.Element( ' all ' )
            acl.append(a)
    tree.write(output, 
" UTF-8 " , True)

def update_dir(path):
    print 
" processing %s "   %  path
    items 
=  os.listdir(path)
    
for  item  in  items:
        name 
=  os.path.join(path, item)
        
if  (os.path.isdir(name)):
            update_dir(os.path.join(name))
        elif (os.path.isfile(name) and cmp(item, 
' fileattr.xml ' ==   0 ):
            update_file(name, name)

def main(argv):    
    update_dir(argv[
1 ])

main(sys.argv)

 

 

方法二:UE

<acl user="swordbuilder">(.*\n)*.*</acl>

 

方法三:shell脚本

find -name 'fileattr.xml' | xargs perl -pi -e 's|<acl user="swordbuilder">(.*\n)*.*</acl>|<acl user="swordbuilder"><all /></acl>|g'

 

你可能感兴趣的:(xml)