代码之家  ›  专栏  ›  技术社区  ›  JChris

如何在python 3中选择具有给定子节点的所有xml节点?

  •  0
  • JChris  · 技术社区  · 8 年前

    我有以下来自nmap的xml:

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

    我只想得到 host 具有子元素的元素 hostscript 是的。我跟着蟒蛇3 tutorial 具有 root.findall(".//hostscript/..[@name='host']") 是的。在上面的例子中,我应该只得到2/3。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Gordon Haim Evgi    8 年前

    要选择具有子hostscript的主机元素,可以使用以下xpath:

    /nmaprun/host[hostscript]
    

    正如其他人在对你的问题的评论中指出的那样, @name 正在查找属性节点。你可能想用 name() 相反。