Mik*_*ike 29 python xml replace find
我期待使用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>
Run Code Online (Sandbox Code Playgroud)
Mar*_*nen 52
基础:
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)
Run Code Online (Sandbox Code Playgroud)
如果标记名称是唯一的,则可以缩短路径.此语法在树中的任何深度级别查找第一个节点.
tree.find('.//begdate').text = '1/1/2011'
tree.find('.//enddate').text = '1/1/2011'
Run Code Online (Sandbox Code Playgroud)
如果你只想替换附带的位%
,那么这不是一个真正的XML问题.您可以使用正则表达式轻松完成:
import re
xmlstring = open('myxmldocument.xml', 'r').read()
substitutions = {'SITEDESCR': 'myvalue', ...}
pattern = re.compile(r'%([^%]+)%')
xmlstring = re.sub(pattern, lambda m: substitutions[m.group(1)], xmlstring)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63693 次 |
最近记录: |