gpt4 book ai didi

python - 解析 XML 数据文件结果为 json 或 dict

转载 作者:行者123 更新时间:2023-12-01 09:31:27 24 4
gpt4 key购买 nike

我有数据,获取额外信息的最佳方式是什么:下面是伪代码。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)

提取信息的最佳方法是什么?感谢您的所有投入。

最佳答案

以下任何一项都无法正确打开您的 xml 文件:

xml2dictElementTreeminidom

我继续使用我以前从未使用过的BeautifulSoup,令人惊讶的是,它有效!

fp = open('test.xml')

soup = BeautifulSoup(fp, 'xml')

items = soup.find_all('oif-name')

for item in items:
print item
print item.get_text()

need to parse following: nf:data > show > ip > mroute > TABLE_vrf > ROW_vrf > TABLE_one_route > ROW_one_route oif-name

输出:

<oif-name>Ethernet2/32</oif-name>
Ethernet2/32
<oif-name>Ethernet1/32</oif-name>
Ethernet1/32

关于python - 解析 XML 数据文件结果为 json 或 dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49933233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com