使用BeautifulSoup处理XML文档

        最近需要用python处理一个简单的XML,因其格式较乱,恰巧为了测试BeautifulSoup,所以百度学习了下,发现大多数都是解析HTML的文章,所以翻文档大概笔记下,功能是实现了,但问题很多后期再说吧。

测试XML代码:

<?xml version="1.0" encoding="utf-8"?>
<web-app>
    <context-param>
         <param-name>地址</param-name>
         <param-value>北京西街</param-value>
    </context-param>
    <listener>
         <listener-class>
                寡妇墙.....
         </listener-class>
    </listener>
    <servlet>
         <servlet-name>姓名</servlet-name>
         <servlet-class>小强</servlet-class>
         <init-param>
               <param-name>动物</param-name>
               <param-value>人类</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>
</web-app>

测试python代码

#coding=utf-8
'''
    简单测试BeautifulSoup解析XML
'''
from bs4 import BeautifulSoup
import re

#使用BeautifulSoup以XML格式打开test.xml文件
soup = BeautifulSoup(open('test.xml'),'xml')
#格式化XML输出
print soup.prettify()
#查找所有叫param-value的tag子节点

print "\n" +  "*"*20 + "\n"
print soup.find_all('param-value')

print "\n" +  "*"*20 + "\n"
#打印出所有符合条件的子节点属性值
for tag in soup.find_all('param-value'):
	print tag.text.strip()

print "\n" +  "*"*20 + "\n"
#使用正则的方式查找符合条件的子节点
for tag1 in soup.find_all(re.compile('param-value')):
	print tag1.text.strip()

输出结果

<?xml version="1.0" encoding="utf-8"?>
<web-app>
 <context-param>
  <param-name>
   地址
  </param-name>
  <param-value>
   北京西街
  </param-value>
 </context-param>
 <listener>
  <listener-class>
   寡妇墙.....
  </listener-class>
 </listener>
 <servlet>
  <servlet-name>
   姓名
  </servlet-name>
  <servlet-class>
   小强
  </servlet-class>
  <init-param>
   <param-name>
    动物
   </param-name>
   <param-value>
    人类
   </param-value>
  </init-param>
  <load-on-startup>
   1
  </load-on-startup>
 </servlet>
</web-app>

********************

[<param-value>北京西街</param-value>, <param-value>人类</param-value>]

********************

北京西街
人类

********************

北京西街
人类


转载于:https://my.oschina.net/u/1188877/blog/362734

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值