简体   繁体   English

Ruby-使用nokogiri从XML提取值

[英]Ruby - Extract values from XML using nokogiri

This is my XML: 这是我的XML:

<Group ID="1" ParentGroupID="5" targetHostname="" Name="127.0.0.1[192.168.0.8]:80 | 81 | 80" LoadBalancerMaxConnections="0" State="1" ProtocolType="TCP" Description="HttpProxy" ProtocolName="HttpProxy">
  <Instance ID="1" Type="CrossProtocol.CrossProtocolHost" NoDelay="False" KeepAlive="False" LocalIP="0.0.0.0" LocalPort="80" ServiceID="-1" MaxConnections="0" RemoteIP="127.0.0.1" RemotePort="80" CallBackPort="81" Description="HttpProxy" DesignatedIP="1.1.1.1" ProtocolName="HttpProxy">
    <IPAddressRestriction Name="Restrict or grant access to services based on IP addresses" Type="0" Description="">
    </IPAddressRestriction>
  </Instance>
  <Instance ID="2" Type="CrossProtocol.CrossProtocolHost" LocalIP="0.0.0.0" LocalPort="81" ServiceID="0" MaxConnections="0" Description="HttpProxy">
    <IPAddressRestriction Name="IPAddress Restriction" Type="0" Description="Restrict or grant access to services based on IP addresses">
    </IPAddressRestriction>
  </Instance>
</Group>

I want to get the value of RemotePort out of the XML to use as a variable, I tried using : 我想从XML中获取RemotePort的值以用作变量,我尝试使用:

doc.xpath("//Instance/RemotePort")

But I get this as response: 但是我得到这个作为回应:

doc.xpath("//Instance/RemotePort")
=> []

What did I do wrong ? 我做错了什么 ?

doc.xpath('//Instance/@RemotePort')
# => [#<Nokogiri::XML::Attr:0x11615d8 name="RemotePort" value="80">]

doc.xpath('//Instance/@RemotePort').map(&:value)
# => ["80"] 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM