我尝试更新子项的属性,然后将更新的元素写入文档。我遇到了这个错误:' AttributeError:元素实例没有属性' getiterator' '
我在拼凑了一堆教程和资源之后做了这个,所以让我知道是否有其他突出的东西(不太清楚我在做什么)。谢谢!
这是我到目前为止所拥有的:
在XML文档中:
<?xml version="1.0" ?>
<notes>
<prepData a_assetType="Geometry" b_assetSel="[u'pPyramid1', u'pTorus1']"/>
<prepData a_assetType="Rig" b_assetSel="[u'pPyramid1']"/>
<prepData a_assetType="Controls" b_assetSel="[u'pPyramid1']"/>
</notes>
编写XML代码:
xml_file_path = "{0}/{1}_prepData.xml".format( info_dir, asset_type )
doc = ET.parse( xml_file_path )
dom = parse( xml_file_path )
root = doc.getroot()
nodes = dom.getElementsByTagName( 'prepData' )
match = []
for node in nodes:
if node.attributes['a_assetType'].value == asset_type:
match.append( node )
for node in match:
node.setAttribute( "b_assetSel", str(asset_sel) )
out = ET.tostring( node )
dom = minidom.parseString( out )
xml_file = open("{0}/{1}_prepData.xml".format( info_dir, asset_name ), "w")
xml_file.write( dom.toprettyxml() )
xml_file.close()
答案 0 :(得分:1)
使用Library A
搜索并设置元素的属性:
xml.etree.ElementTree
我们使用简单的XPath
expression来查找具有所需import xml.etree.ElementTree as ET
doc = ET.parse(xml_file_path)
root = doc.getroot()
for elm in root.findall(".//prepData[@a_assetType='%s']" % asset_type):
elm.attrib["b_assetSel"] = str(asset_sel)
out = ET.tostring(root)
print(out)
属性值的所有prepData
元素。对于找到的每个元素,我们通过.attrib
设置a_assetType
属性值。