使用Python查找和替换XML中的值
我正在寻找使用python编辑XML文件。我想查找并替换标签中的关键字。过去,一位同事建立了XML模板文件,并使用“查找并替换”程序替换了这些关键字。我想使用python查找和将这些关键字替换为值。我一直在自学Elementtree模块,但是在尝试查找和替换时遇到了麻烦。我已经附上了我的XML文件的片段。您将看到一些被%包围的变量(即%SITEDESCR%),这些是我要替换的单词,然后将XML保存到新文件中。任何帮助或建议将是巨大的。
谢谢,迈克
<metadata>
<idinfo>
<citation>
<citeinfo>
<origin>My Company</origin>
<pubdate>05/04/2009</pubdate>
<title>POLYGONS</title>
<geoform>vector digital data</geoform>
<onlink>\\C$\ArcGISDevelopment\Geodatabase\PDA_STD_05_25_2009.gdb</onlink>
</citeinfo>
</citation>
<descript>
<abstract>This dataset represents the mapped polygons developed from the field data for the %SITEDESCR%.</abstract>
<purpose>This dataset was created to accompany some stuff.</purpose>
</descript>
<timeperd>
<timeinfo>
<rngdates>
<begdate>%begdate%</begdate>
<begtime>unknown</begtime>
<enddate>%enddate%</enddate>
<endtime>unknown</endtime>
</rngdates>
</timeinfo>
<current>ground condition</current>
</timeperd>
-
基础:
from xml.etree import ElementTree as et tree = et.parse(datafile) tree.find('idinfo/timeperd/timeinfo/rngdates/begdate').text = '1/1/2011' tree.find('idinfo/timeperd/timeinfo/rngdates/enddate').text = '1/1/2011' tree.write(datafile)
如果标签名称唯一,则可以缩短路径。此语法可在树中任何深度级别找到第一个节点。
tree.find('.//begdate').text = '1/1/2011' tree.find('.//enddate').text = '1/1/2011'