用Python解决XML问题

时间:2019-01-01 10:46:37

标签: python

我有一个包含很多信息和标签的xml文件。 例如,我有这个标签:

<SelectListMap SourceName="Document Type" SourceNumber="43" DestName="Document Type" DestNumber="43"/>

我还有其他40个这样的标签,它们具有相同的节点,但是这些节点的值在每个标签中都不相同。 SourceName和DestName具有相同的值。

在某些标记中,DestName值像这样是空的:

<SelectListMap SourceName="Boolean Values" SourceNumber="73" DestName="" DestNumber="0" IsInternal="True"/>

因此,我正在尝试为空的DestName提供Sourcename的值。

这是我的Python代码:

import re
import xml.etree.ElementTree as ET
tree = ET.parse("SPPID04A_BG3 - Copy - Copy.xml")
root = tree.getroot()
for SelectListMap in root.iter('SelectListMap'):
    #DestName.text = str(DestName)
    for node in tree.iter('SelectListMap'):
        SourceName = node.attrib.get('SourceName')
    SelectListMap.set('DestName', SourceName)  
tree.write("SPPID04A_BG3 - Copy - Copy.xml")   

该程序无法正确运行。有什么帮助或想法吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

您永远不会检查DestName属性是否为空。如果将以下第一个for循环替换为以下内容,则应获得所需的内容:

for SelectListMap in root.iter('SelectListMap'):
    if SelectListMap.get("DestName") == "":
        SourceName = SelectListMap.get("SourceName")
        SelectListMap.set("DestName", SourceName)