Python小工具更新Xml内容

 自己写的一个从Xml中提取指定内容,调整之后更新至源文件的脚本,记录一下:

#!/usr/bin/python

import sys
import os,os.path
import argparse
import xml.etree.ElementTree as ET

def anXml(fileName,testXml):
    a = ET.Element("root")

    sumCount=0
    xmlFp = ET.parse(fileName)
    root=xmlFp.getroot()
    for child in root:
        content=child.get('content')
        if content is not None:
            num=content.count('%s')+content.count('%d')
            if num>=2:
                sumCount+=1
                print(child.attrib['id'])
                newNode = ET.SubElement(a,"info")
                for eva in child.attrib:
                    newNode.attrib[eva] = child.attrib[eva]
    
    print('Sum Count:'+ str(sumCount))
    tree = ET.ElementTree(a)
    tree.write(testXml,encoding = 'utf-8')

def updateXml(fileName,testXml):
    tmpDic={};
    xmlFp = ET.parse(testXml)
    root=xmlFp.getroot()
    for child in root:
        id=child.get('id')
        content=child.get('content')
        tmpDic[id]=content
    
    xmlFp = ET.parse(fileName)
    root=xmlFp.getroot()
    for node in root.findall("language"):
        content=tmpDic.get(node.attrib['id'])
        if content is not None:
            print(content)
            if content=='':
                root.remove(node)
            else:
                node.attrib['content']=content
    xmlFp.write(fileName,encoding = 'utf-8')

def init(path,mode):
    print(path)
    languageXml=path+'Language.xml'
    testXml=path+'test.xml'
    if mode is None or mode==0:
        anXml(languageXml,testXml)
    else:
        updateXml(languageXml,testXml)

if __name__=='__main__':
    parser = argparse.ArgumentParser(description='Process rename floders root path.')
    parser.add_argument('-p', '--path', help='floder path')
    parser.add_argument('-m', '--mode', help='handle type')
    args = parser.parse_args()
    init(args.path+'\\',args.mode)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值