2013-05-10 2 views
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 МАС-адрес все еще включен. Любые подсказки будут высоко оценены.

ответ

1

Вам не нужно заявление if; вы можете сделать это в одном выражении XPath.

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

Вы просто выбрать address элементы, которые вы хотите, а затем захватить атрибут addr. Вы были близки.

+0

Вы, сэр, легенда. Большое спасибо. – Guarin

Смежные вопросы