Ruby - парсинг XML с помощью Nokogiri - PullRequest
0 голосов
/ 09 октября 2018

Я не знаком с 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
 => [] 

1 Ответ

0 голосов
/ 09 октября 2018

Избавьтесь от чего-либо до <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> объявления XML - в вашем случае пропустите строку "show ip int brief vrf all | xml\r\n".

Как только ваш документ проанализирован, следуйте официальному руководству по поиску - для новичка ИМХО лучше избегать Xpath и просто придерживаться .css селекторов, которые будет легко понять, если выВы когда-нибудь делали какие-либо CSS или Jquery.

...