如何根据不同的属性值访问属性值?
问题描述:
我正在自学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通过声明应该忽略if addrtype="mac"
只提取IP地址。这里是我的代码:
hosts = nmap_file.xpath('//host/address/@addr') if nmap_file.xpath('//host/address[not(@addrtype="mac")]')
这是行不通的,当我puts hosts
MAC地址仍然包括在内。任何提示将不胜感激。
答
您不需要if
声明;您可以在单个XPath语句中执行此操作。
.xpath('//host/address[not(@addrtype="mac")]/@addr')
您只需选择你想要的address
元素,然后抓住addr
属性。你很近。
你先生,是一个传奇。非常感谢。 – Guarin 2013-05-10 20:50:14