1

我正在自学 Ruby 和 Nokogiri。我有一个 nmap 扫描,输出如下:

<host starttime="1368204336" endtime="1368204506"><status state="up" reason="arp-  response" reason_ttl="0"/>
<address addr="192.168.1.254" addrtype="ipv4"/>
<address addr="88:53:D4:07:F1:3B" addrtype="mac" vendor="Huawei Technologies Co."/>

我正在尝试使用 Nokogiri 通过声明它应该忽略来仅提取 IP 地址if addrtype="mac"。这是我的代码:

hosts = nmap_file.xpath('//host/address/@addr') if nmap_file.xpath('//host/address[not(@addrtype="mac")]')

这不起作用,当我puts hosts仍然包含 MAC 地址时。任何提示将不胜感激。

4

1 回答 1

1

您不需要if声明;您可以在单个 XPath 语句中执行此操作。

.xpath('//host/address[not(@addrtype="mac")]/@addr')

您只需选择所需的address元素,然后获取addr属性。你很亲密。

于 2013-05-10T19:33:06.990 回答