【发布时间】:2018-04-20 02:58:08
【问题描述】:
我有数据,额外信息的最佳方式是什么: 下面是伪代码。 XML 数据:
<nf:data>
<show>
<ip>
<mroute>
<__XML__OPT_Cmd_mrib_show_mroute_command>
<__XML__BLK_Cmd_mrib_show_mroute_command_source>
<__XML__OPT_Cmd_mrib_show_mroute_command_source>
<__XML__OPT_Cmd_mrib_show_mroute_command_group>
<group>
<__XML__PARAM_value>239.16.110.124</__XML__PARAM_value>
</group>
</__XML__OPT_Cmd_mrib_show_mroute_command_group>
</__XML__OPT_Cmd_mrib_show_mroute_command_source>
</__XML__BLK_Cmd_mrib_show_mroute_command_source>
<__XML__OPT_Cmd_mrib_show_mroute_command_vrf>
<__XML__OPT_Cmd_mrib_show_mroute_command___readonly__>
<__readonly__>
<TABLE_vrf>
<ROW_vrf>
<vrf-name>default</vrf-name>
<route_count>10623</route_count>
<star_g_cnt>4842</star_g_cnt>
<sg_cnt>5780</sg_cnt>
<star_g_prfx_cnt>1</star_g_prfx_cnt>
<TABLE_one_route>
<ROW_one_route>
<mcast-addrs>(192.168.2.28/32, 239.16.110.124/32)</mcast-addrs>
<pending>false</pending>
<bidir>false</bidir>
<uptime>3w6d</uptime>
<mofrr>false</mofrr>
<TABLE_mpib>
<ROW_mpib>
<mpib-name>pim</mpib-name>
<oif-count>2</oif-count>
<stale-route>false</stale-route>
</ROW_mpib>
<ROW_mpib>
<mpib-name>ip</mpib-name>
<oif-count>0</oif-count>
<stale-route>false</stale-route>
</ROW_mpib>
</TABLE_mpib>
<stats-pkts>625954</stats-pkts>
<stats-bytes>31923654</stats-bytes>
<stats-rate-buf>108.800 bps</stats-rate-buf>
<route-iif>Ethernet2/1</route-iif>
<rpf-nbr>192.168.1.251</rpf-nbr>
<mofrr-iif>Null</mofrr-iif>
<mofrr-nbr>0.0.0.0</mofrr-nbr>
<internal>false</internal>
<oif-count>2</oif-count>
<fabric-oif>false</fabric-oif>
<fabric-loser>false</fabric-loser>
<TABLE_oif>
<ROW_oif>
<oif-name>Ethernet2/32</oif-name>
<oif-uptime>3w6d</oif-uptime>
<TABLE_oif_mpib>
<ROW_oif_mpib>
<oif-mpib-name>pim</oif-mpib-name>
<stale-oif>false</stale-oif>
<omd-vpc-svi>false</omd-vpc-svi>
</ROW_oif_mpib>
</TABLE_oif_mpib>
<rpf>false</rpf>
</ROW_oif>
<ROW_oif>
<oif-name>Ethernet1/32</oif-name>
<oif-uptime>3w6d</oif-uptime>
<TABLE_oif_mpib>
<ROW_oif_mpib>
<oif-mpib-name>pim</oif-mpib-name>
<stale-oif>false</stale-oif>
<omd-vpc-svi>false</omd-vpc-svi>
</ROW_oif_mpib>
</TABLE_oif_mpib>
<rpf>false</rpf>
</ROW_oif>
</TABLE_oif>
</ROW_one_route>
</TABLE_one_route>
</ROW_vrf>
</TABLE_vrf>
</__readonly__>
</__XML__OPT_Cmd_mrib_show_mroute_command___readonly__>
</__XML__OPT_Cmd_mrib_show_mroute_command_vrf>
</__XML__OPT_Cmd_mrib_show_mroute_command>
</mroute>
</ip>
</show>
</nf:data>
</nf:rpc-reply>
需要解析以下内容:
1.登录切换
2. 寻找线索:
3. 循环:(nf:data > show > ip > mroute > TABLE_vrf > ROW_vrf > TABLE_one_route > ROW_one_route)
4.
伪代码:
for loop ROW_one_route
if mcast-addrs startswith (*,)
skip
if mcast-addrs startswith (\d)
parse following information:
forloop TABLE_oif > ROW_oif
statbps = stats-rate-buf
statpkt = stats-pkts
if oif-name startswith (vlan*)
skip
if oif-name startstwith (eth)
find oif-name
outint.append(oif-name)
提取信息的最佳方法是什么?感谢您的所有意见。
【问题讨论】:
-
抱歉,
xml2dict有问题 -
Dict 是否比 json 输出更好,以提取每个对象?