Ruby - 使用 Nokogiri 解析 XML

Ruby - Parsing XML with Nokogiri

我不熟悉 XML 并尝试进行一些网络自动化。我收到了如下 XML 的响应,并尝试将其转换为散列或其他内容以便于使用它。我不知道我是否做错了什么。我得到如下所示的输出。

任何人都可以把我推向一个方向吗?我尝试了 nokogiri 文档和指南,但我有点迷路了。

我的数据:

"show ip int brief vrf all | xml\r\n" +
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" +
"<nf:rpc-reply xmlns:nf=\"urn:ietf:params:xml:ns:netconf:base:1.0\" xmlns=\"http://www.cisco.com/nxos:1.0:ip\">\n" +
" <nf:data>\n" +
"  <show>\n" +
"   <ip>\n" +
"    <interface>\n" +
"     <__XML__BLK_Cmd_ip_show_interface_command_brief>\n" +
"      <__XML__OPT_Cmd_ip_show_interface_command_operational>\n" +
"       <__XML__OPT_Cmd_ip_show_interface_command_vrf>\n" +
"        <__XML__OPT_Cmd_ip_show_interface_command___readonly__>\n" +
"         <__readonly__>\n" +
"          <TABLE_vrf>\n" +
"           <ROW_vrf>\n" +
"            <vrf-name-out>management</vrf-name-out>\n" +
"           </ROW_vrf>\n" +
"          </TABLE_vrf>\n" +
"          <TABLE_intf>\n" +
"           <ROW_intf>\n" +
"            <intf-name>mgmt0</intf-name>\n" +
"            <prefix>10.70.237.15</prefix>\n" +
"            <ip-disabled>FALSE</ip-disabled>\n" +
"            <iod>316</iod>\n" +
"            <proto-state>up</proto-state>\n" +
"            <link-state>up</link-state>\n" +
"            <admin-state>up</admin-state>\n" +
"           </ROW_intf>\n" +
"          </TABLE_intf>\n" +
"         </__readonly__>\n" +
"        </__XML__OPT_Cmd_ip_show_interface_command___readonly__>\n" +
"       </__XML__OPT_Cmd_ip_show_interface_command_vrf>\n" +
"      </__XML__OPT_Cmd_ip_show_interface_command_operational>\n" +
"     </__XML__BLK_Cmd_ip_show_interface_command_brief>\n" +
"    </interface>\n" +
"   </ip>\n" +
"  </show>\n" +
" </nf:data>\n" +
"</nf:rpc-reply>\n" +


2.4.1 :363 > doc = Nokogiri::XML(my_data)
 => #<Nokogiri::XML::Document:0x173dda8 name="document"> 
2.4.1 :364 > doc.elements
 => [] 

删除 <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> XML 声明之前的所有内容 - 在您的情况下,省略 "show ip int brief vrf all | xml\r\n" 行。

一旦您的文档被解析,请遵循 official tutorial on searching - 对于初学者恕我直言,最好避免使用 Xpath 并坚持使用 .css 选择器,如果您曾经做过,这将很容易掌握任何 CSS 或 Jquery。