Python缺少XML版本

1 投票
1 回答
2705 浏览
提问于 2025-04-18 18:15

我正在用Python处理XML文件,想要更新一些XML数据。

我遇到了一个小问题,当我更新XML时,它没有写入XML版本。

这是我的代码:

import xml.etree.ElementTree as ET
tree = ET.parse(r'c:\users\g\desktop\IT_ADMINVersionTrack.xml')
root = tree.getroot()

for country in root.findall('dtModule'):
  f = country.find('FolderName').text
  print "FOLDER:",f
  v = country.find('Version').text
  print "OLD VERSION:",v
  if v == "11.0":        
    country.find('Version').text = "12.0"
    v2 = country.find('Version').text
    print "NEW VERSION",v2
  else:        
    print "NO CHANGE IN VERSION"

tree.write(r'c:\users\g\desktop\output.xml')

输入的XML内容:

<?xml version="1.0"?>
<dsModule>
<dtModule>
<ModuleName>IT_ADMIN</ModuleName>
<Version>11.0</Version>
<FolderName>IT_ADMIN\ItDataCompInterface.dll.gz</FolderName>
<Type>P</Type>
<ClientId />
<Destination />
</dtModule>
</dsModule>

输出的XML内容:

<dsModule>
<dtModule>
<ModuleName>IT_ADMIN</ModuleName>
<Version>12.0</Version>
<FolderName>IT_ADMIN\ItDataCompInterface.dll.gz</FolderName>
<Type>P</Type>
<ClientId />
<Destination />
</dtModule>
</dsModule>

XML版本缺失了。

1 个回答

3

其实,write的默认选项是:

write(file, encoding="us-ascii", xml_declaration=None, default_namespace=None, method="xml")

不过,这样做还是会有问题,因为某些版本的xml.etree需要你提供编码。因此,为了让XML版本在输出文件中可见,你的最后一行代码应该是:

tree.write('output.xml', xml_declaration=True, method='xml', encoding='UTF-8')

撰写回答