用Python替换XML标记

时间:2013-11-10 09:45:02

标签: python xml

我有一个带有<en-media>标记的XML文档:

<en-media type="image/png" hash="06c5ec15535babbcd3eef471f51af870"/>

我正在尝试将该标记更改为HTML <img>,因此它看起来如下所示:

<img src="06c5ec15535babbcd3eef471f51af870"/>

这适用于文件以其哈希值命名。

我一直在使用xml.etree.ElementTree尝试这样做,我一直在关注http://docs.python.org/2/library/xml.etree.elementtree.html,但我似乎无法接近工作。

任何人都可以帮我吗?

由于

2 个答案:

答案 0 :(得分:1)

以下是使用ElementTree完成的方法。

输入XML(test.xml):

<root>
  <en-media type="image/png" hash="06c5ec15535babbcd3eef471f51af870"/>
</root>

Python代码:

from xml.etree import ElementTree as ET

root = ET.parse("test.xml").getroot()

# Get the 'en_media' element
en_media = root.find("en-media")

# Add the 'img' element (with 'src' attribute) as a sub-element of 'root'
img = ET.SubElement(root, "img", src=en_media.get("hash"))

# Remove 'en_media'
root.remove(en_media)

print ET.tostring(root)

输出:

<root>
  <img src="06c5ec15535babbcd3eef471f51af870" /></root>

答案 1 :(得分:0)

您可以使用 BeautifulSoup

例如:

from bs4 import BeautifulSoup
a = BeautifulSoup("<somelink rel='stylesheet'>")
print a
# output : <html><body><somelink rel="stylesheet"></somelink></body></html>
b = a.somelink
b.name = "link"
print a
# output : <html><body><link rel="stylesheet"></link></body></html>
print b
# output : <link rel="stylesheet"></link>