基于先前检索的路径递归地创建不同版本的XML文件

时间:2015-03-13 21:54:58

标签: python xml dictionary elementtree

我在将某些节点文本写入xml文件时遇到问题。我有一个xml文件,我需要通过创建原始文件的不同版本(0,000s)来修改。下面给出了一个伪文件。

<data>
<country name="Liechtenstein">
    <rank updated="yes">2</rank>
    <language>english</language>
    <currency>1.21$/kg</currency> 
    <gdppc month="06">141100</gdppc>
    <gdpnp month="10">2.304e+0150</gdpnp>
    <neighbor name="Austria" direction="E"/>
    <neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
    <rank updated="yes">5</rank>
    <language>english</language>
    <currency>4.1$/kg</currency> 
    <gdppc month="05">59900</gdppc>
    <gdpnp month="08">5.2e-015</gdpnp>
    <neighbor name="Malaysia" direction="N"/>
</country>

我已经能够使用下面给出的代码检索这些限定文本节点及其路径。

def extractNumbers(path, node):
    nums = []

if 'month' in node.attrib:
    if node.attrib['month'] in ['05', '06']:
        return nums
    path += '/' + node.tag
    if 'name' in node.keys():
        path += '=' + node.attrib['name']

    try:
        num = float(node.text)
        nums.append( (path, num) )
    except (ValueError, TypeError):
        pass

    for e in list(node):
        nums.extend( extractNumbers(path, e) )

    return nums

tree = ET.parse('jerry.xml')
nums = extractNumbers('', tree.getroot())
print len(nums)
print nums

下面给出了一个这样的路径和值的例子

('/data/country name=Singapore/gdpnp month=08', 5.2e-015

我现在需要读取值5.2e-015的修改形式,根据上述路径将2*5.2e-015说成xml文件?我需要创建这些文件中的0,000个。有什么方法可以解决这个问题,或者之前是否有人实施此方法?

0 个答案:

没有答案