Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python minidom查找空文本节点_Python_Replace_Minidom - Fatal编程技术网

Python minidom查找空文本节点

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>

我使用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>','').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)