2014-10-19 123 views
0

我有一个输入XML结构如图所示如何在Beautifulsoup中的新标签下包装多个标签?

<sometag> <a></a> <b></b> <c> <d></d> </c> </sometag> 

现在我需要在<sometag>...</sometag>之间包裹的一切到一个新的标签,这将是对sometag

的子标签所需的结构将是

<sometag> <newtag> <a></a> <b></b> <c> <d></d> </c> </newtag> </sometag> 

这是如何实现的?

我知道我可以使用wrap和unwrap函数两次来实现相同。

soup = BeautifulSoup("<sometag> <a></a> <b></b> <c> <d></d> </c> </sometag>",'xml') 
soup.sometag.wrap(soup.new_tag('newtag')) 
soup.sometag.unwrap() 
soup.newtag.wrap(soup.new_tag('sometag')) 
print soup 

但是还有没有其他更好的方法?

回答

1

当你只处理标签名称的选择是重命名sometagnewtag,然后用一个新的sometag包装newtag

soup.sometag.name = 'newtag' 
soup.newtag.wrap(soup.new_tag('sometag')) 

或包裹第一和最后一个重命名:

soup.sometag.wrap(soup.new_tag('sometag')).sometag.name = 'newtag'