如何根据不同的属性值访问属性值?

如何根据不同的属性值访问属性值?

问题描述:

我正在自学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属性。你很近。

+0

你先生,是一个传奇。非常感谢。 – Guarin 2013-05-10 20:50:14