Python minidom查找空文本节点
我使用minidom解析器解析XML文件,在这里我对XML进行迭代,并将位于标记之间的特定信息输出到字典中 像这样:Python minidom查找空文本节点,python,replace,minidom,Python,Replace,Minidom,我使用minidom解析器解析XML文件,在这里我对XML进行迭代,并将位于标记之间的特定信息输出到字典中 像这样: d={} dom = parseString(data) macro=dom.getElementsByTagName('macro') for node in macro: d={} id_name=node.getElementsByTagName('id')[0].toxml() id_data=id_name.replace('<id>
d={}
dom = parseString(data)
macro=dom.getElementsByTagName('macro')
for node in macro:
d={}
id_name=node.getElementsByTagName('id')[0].toxml()
id_data=id_name.replace('<id>','').replace('</id>','')
print (id_data)
cl_name=node.getElementsByTagName('cl')[1].toxml()
cl_data=cl_name.replace('<cl>','').replace('</cl>','')
print (cl_data)
d_source[id_data]=(cl_data)
我必须查找空文本节点,我尝试这样做:
if node.getElementsByTagName('cl')[1].toxml is None:
print ('')
else:
cl_name=node.getElementsByTagName('cl')[1].toxml()
cl_data=cl_name.replace('<cl>','').replace('</cl>','')
print (cl_data)
d_target[id_data]=(cl_data)
print(d_target)
如果node.getElementsByTagName('cl')[1].toxml为无:
打印(“”)
其他:
cl_name=node.getElementsByTagName('cl')[1].toxml()
cl_数据=cl_名称。替换(“”“”)。替换(“”“”)
打印(cl_数据)
d_目标[id_数据]=(cl_数据)
打印(d_目标)
我仍然收到那个索引错误…我还想过在原始源文件中插入一个空格,但不确定这是否能解决这个问题。有什么想法吗?如果minidom不是以某种方式指定的,我建议您改变主意,使用标准的xml.etree.ElementTree。这要容易得多。在原始源文件中添加空白时,我发现它起作用了。这看起来有点乱。所以如果有人有更好的主意,我期待着 我确实试过(参见这里:[link]()),但发现这非常复杂,于是放弃了,并切换回minidom。实际上,ElementTree元素的行为类似于子元素的列表。每个元素都有
.attrib
属性,该属性是属性字典。对于Python来说,这是非常简单的。
d={blabla:'',xyz:'abc'}
if node.getElementsByTagName('cl')[1].toxml is None:
print ('')
else:
cl_name=node.getElementsByTagName('cl')[1].toxml()
cl_data=cl_name.replace('<cl>','').replace('</cl>','')
print (cl_data)
d_target[id_data]=(cl_data)
print(d_target)