Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
如何在Python3中选择具有给定子节点的所有XML节点?_Xml_Python 3.x - Fatal编程技术网

如何在Python3中选择具有给定子节点的所有XML节点?

如何在Python3中选择具有给定子节点的所有XML节点?,xml,python-3.x,Xml,Python 3.x,我从nmap获得了以下XML: <nmaprun> <host> <address> <hostsnames> <ports> <hostscript> </host> <host> <address> <hostsnames> <por

我从nmap获得了以下XML:

<nmaprun>
    <host>
        <address>
        <hostsnames>
        <ports>
        <hostscript>
    </host>
    <host>
        <address>
        <hostsnames>
        <ports>
    </host>
    <host>
        <address>
        <hostsnames>
        <ports>
        <hostscript>
    </host>
</nmaprun>


使用
root.findall(“.//hostscript/.[@name='host'])”
。在上面的示例中,我应该只得到3个元素中的2个。

要选择包含子hostscript的主机元素,可以使用以下XPath:

/nmaprun/host[hostscript]

正如其他人在对您的问题的评论中指出的那样,
@name
正在查找属性节点。您可能想改为使用。

/nmaprun/host[hostscript]
?您的尝试失败,因为
@name
假定存在一个属性
name
,该属性包含确切的文本
host
。这在您的示例XML中的任何地方都不会发生。修复了输入错误,实际上,在我的示例中,
/host[hostscript]
工作正常!