我正在寻找使用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'
另外,请阅读文档,尤其是。在XPath的定位节点的支持。