如何使用具有IF / THEN语句的Python保存XML文件

时间:2018-07-26 13:39:07

标签: python xml metadata

我有一个XML文件,正在使用Python进行编辑,并且我已经设置了可以成功修改我想要的所有元素的代码,但是当涉及到字段属性时,它似乎并没有更新。问题在于,对于数据表中的每个字段,XML都不区分一个字段和下一个字段,因此所有XML标签都相同:

      <attr>
        <attrlabl>STATE_NAME</attrlabl>
        <attrdef>State Name</attrdef>
        <attrdefs>HRSA GDW</attrdefs>
        <attrdomv>
          <udom>2010</udom>
        </attrdomv>
      </attr>
      <attr>
        <attrlabl>County</attrlabl>
        <attrdef>County Name</attrdef>
        <attrdefs>HRSA GDW</attrdefs>
        <attrdomv>
          <udom>2010</udom>
        </attrdomv>
      </attr>
      <attr>
        <attrlabl>STCOFIPS</attrlabl>
        <attrdef>State/County FIPS ID</attrdef>
        <attrdefs>HRSA GDW</attrdefs>
        <attrdomv>
          <udom>2010</udom>
        </attrdomv>
      </attr>

我正在尝试使用Python修改属性“ attrdefs”,然后提交更改:

import arcpy, sys  
from xml.etree.ElementTree import ElementTree  
from xml.etree.ElementTree import Element, SubElement  
from arcpy import env  
env.overwriteOutput = True  
fcpath = r"...\HL Metadata to BR Sample Data.gdb\NCI20102014_All_Cancer_County" 
translatorpath = r"...\ARCGIS2FGDC.xml" 
xmlfile = r"...\FullMetaFC.xml" 
arcpy.ExportMetadata_conversion(fcpath, translatorpath, xmlfile)

tree = ElementTree() # make an ElementTree object  
tree.parse(xmlfile) # read the xml into the ElementTree  

#FIELD UPDATING HERE
lab = tree.find("eainfo/detailed/attr/attrdefs")
ele = tree.find("eainfo/detailed")
for e in ele.iter("attrlabl"):
    # loop through children pulling out nodes which have a attrlabl tag
    #print e.text
    # do some sort if IF THEN logic check and update as necessary
    if e.text == "STATE_NAME":
        lab.text = "NAME OF THE STATE"

#COMMIT UPDATES TO XML#
tree.write(xmlfile)

运行此代码不会产生任何错误;它不会为所需字段更新“ attrdefs”字段。如果我向udpate添加其他元素,例如:

public_date = tree.find("idinfo/citation/citeinfo/pubdate")
title.text = "20180725"

该字段将更新得很好,所以我怀疑问题出在IF / THEN语句上。

0 个答案:

没有答案