Ruby 如何从网页加载xml文件并从xml中读取特定节点?

Ruby 如何从网页加载xml文件并从xml中读取特定节点?,ruby,xpath,nokogiri,Ruby,Xpath,Nokogiri,我计划从网页加载下面提到的xml,然后从中读取特定节点。过滤条件:如果“displayname”属性包含“isc-asr901a”,则应选择第一个节点,并返回节点ethernetprotocolendpointextendedto”的属性“id”值 谢谢, Chandana您需要使用Nokogiri::XML,而不是Nokogiri::HTML,因为这是一个XML。此外,您在ethernetProtocolEndpointExtendedDTO中有一个打字错误-您编写了ethernetProto

我计划从网页加载下面提到的xml,然后从中读取特定节点。过滤条件:如果“displayname”属性包含“isc-asr901a”,则应选择第一个节点,并返回节点ethernetprotocolendpointextendedto”的属性“id”值

谢谢,
Chandana

您需要使用
Nokogiri::XML
,而不是
Nokogiri::HTML
,因为这是一个XML。此外,您在
ethernetProtocolEndpointExtendedDTO
中有一个打字错误-您编写了
ethernetProtocolEndpointDTO

此外,还应使用查找包含字符串的显示名称:

strurl = "https://.."
doc = Nokogiri::XML(open(strurl))  
doc.xpath('//queryResponse/entity/ethernetProtocolEndpointExtendedDTO[contains(@displayName, "isc-asr901a")]').each do |node|          
  puts node['id']
end
# => 2283315
strurl = "https://.."
doc = Nokogiri::HTML(open(strurl))  
doc.xpath('//queryResponse/entity/ethernetProtocolEndpointDTO[@displayName="[^"]*isc-asr901a[^"]*]').each do |node|          
puts node['id']
end
strurl = "https://.."
doc = Nokogiri::XML(open(strurl))  
doc.xpath('//queryResponse/entity/ethernetProtocolEndpointExtendedDTO[contains(@displayName, "isc-asr901a")]').each do |node|          
  puts node['id']
end
# => 2283315