Python ElementTree XML修改具有多个值的元素 [英] Python ElementTree XML Modifying Elements with Multiple Values
本文介绍了Python ElementTree XML修改具有多个值的元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用Python 2.7和 lxml
,如何修改具有多个值的XML元素?
Using Python 2.7 and lxml
, how do I modify XML elements with multiple values?
例如
<Title>
<Playcount>1</Playcount>
<Genre>Adventure</Genre>
<Genre>Comedy</Genre>
<Genre>Action</Genre>
</Title>
直接修改 Playcount
,因为它只有一个值.如何修改流派
,女巫具有多个值?
It is straight forward to modify Playcount
, as it has a single value. How do I modify Genre
, witch has multiple values?
例如:
-
如何删除除第一类以外的所有内容?
How do I delete all but the first genre?
如何添加流派?
谢谢.
推荐答案
就像这样::
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.fromstring("""<Title>
<Playcount>1</Playcount>
<Genre>Adventure</Genre>
<Genre>Comedy</Genre>
<Genre>Action</Genre>
<someTag>Text</someTag>
</Title>""", parser=parser)
新播放次数:
playcount = tree.find('Playcount')
playcount.text = "2"
删除流派(不是第一流):
Delete genres (not first):
title = tree.xpath('/Title')[0]
genres = title.xpath('Genre')
for element in genres:
if element.tag == "Genre" and element != title.xpath("Genre[1]")[0]:
element.getparent().remove(element)
新类型:
genre = etree.Element("Genre")
genre.text = "New Genre"
tree.xpath('/Title/Genre[last()]')[0].addnext(genre)
结果:
print etree.tostring(tree, pretty_print=True)
这篇关于Python ElementTree XML修改具有多个值的元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文