小编典典

使用Python查找和替换XML中的值

python

我正在寻找使用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>

阅读 218

收藏
2020-12-20

共1个答案

小编典典

基础:

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的定位节点的支持。

2020-12-20