您的位置:首页 > 其它

替换XML里面的特定节点

2010-07-14 14:39 260 查看
方法一: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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐