使用ElementTree删除父标记(不删除子标记)

时间:2013-05-27 20:10:56

标签: python xml elementtree

我正在使用ElementTree修改以下xml:

<li>
  <p>Some stuff goes in <b>bold</b> here </p>
</li>

我想从<p>元素中删除所有<li>但保留内容。

像这样:

<li>Some stuff goes in <b>bold</b> here</li>

我目前正在使用以下代码,它在简单的情况下工作(没有文本/尾部等等):

# strip <p> from <li> elements
liElements = rootNode.findall('.//li')
for elem in liElements:
    para = elem.find(".//p")
    for child in para:
        elem.append(child)
    elem.text = para.text
    elem.remove(para)

必须有一种更简单的方法来剥离格式化标签....我希望?

1 个答案:

答案 0 :(得分:0)

也许最简单的方法是使用ElementTree来处理HTML,而是使用BeautifulSoup代替;该库通过.unwrap() method明确处理展开:

for elem in soup.find_all('li'):
    for para in elem.find_all('p'):
        para.unwrap()