我在将某些节点文本写入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个。有什么方法可以解决这个问题,或者之前是否有人实施此方法?