替换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

代码
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'

原文地址:https://www.cnblogs.com/linn/p/1777239.html