python:通过增加数字更改xml节点值

时间:2012-09-03 06:41:20

标签: python tags numbers

我有一个XML文档“data.xml”: 我需要编写python脚本,它可以用新的数字替换标签'Num'的所有值节点,并将其写回磁盘。 区别在于新值不是字符串,而是一系列连续增加的数字,如1000,1100,1200,1300 ...... 我在网上做过研究,大多数代码样本都是字符串替换,而不是这样的变量替换。有人有好主意吗?样本如下:

改变之前

<Param><Num>123</Num></Param> <Param><Num>123</Num></Param> <Param><Num>123</Num></Param>

更改后

<Param><Num>1000</Num></Param> <Param><Num>1100</Num></Param> <Param><Num>1200</Num></Param>

1 个答案:

答案 0 :(得分:1)

使用lxml

非常容易实现
from lxml import  objectify

class Parser(object):
    def __init__(self, tree, counter_start, counter_interval):
        self.tree = tree
        self.root = tree.getroot()
        self.counter_start = counter_start
        self.counter_interval = counter_interval

    def parse(self):
        counter = self.counter_start
        # for loop to iter voltage items
        # using counter += counter_interval to set the value for example
        # save the tree within the parser class or in the handle function


def handle(file):
    f = open(file)
    tree = objectify.parse(f)
    parser = Parser(tree, 1000, 100)
    parser.parse()
    f.close()

handle("/Desktop/bar.XML")