如何在 Python 中使用 lxml 将一个元素与另一个元素包裹在一起?
How to wrap anything inside an Element with another Element using lxml in Python?
让我们来看看这个例子:
tree_string = '''
<root>
<must_wrap_anything_inside_this_element> asjkdnasd cass'a s' alsdnjl al <g/>
'asdasjkdhaisbd'assdaewken jka <x id='3'/> kfa;sdf lasd;f naisb fiuabewf <some_random_tag> random stuff </some_random_tag>
yet more text here
</must_wrap_anything_inside_this_element>
</root>
'''
tree = lxml.etree.fromstring(tree_string)
如何将 must_wrap_anything_inside_this_element
元素内的任何内容(是的任何内容 - 文本或其他元素)与另一个元素(如下面的 wrapper
)包裹起来,从而导致:
result = '''
<root>
<must_wrap_anything_inside_this_element>
<wrapper>
asjkdnasd cass'a s' alsdnjl al <g/>
'asdasjkdhaisbd'assdaewken jka <x id='3'/> kfa;sdf lasd;f naisb fiuabewf <some_random_tag> random stuff </some_random_tag>
yet more text here
</wrapper>
</must_wrap_anything_inside_this_element>
</root>
'''
我正在使用 Python 的 lxml 库。谢谢。
好吧,这需要一些体操,但是是可行的....
#locate your target element
target = tree.xpath('//must_wrap_anything_inside_this_element')[0]
#change its tag name....
target.tag="wrapper"
#now create a new element with old, top tag name
tree.insert(0,etree.fromstring('<must_wrap_anything_inside_this_element/>'))
#use the new element as the destination for the old element
destination=tree.xpath('//must_wrap_anything_inside_this_element')[0]
#finally, move the old element to its final resting place...
destination.insert(0,target)
print(etree.tostring(tree).decode())
输出是你想要的输出。
让我们来看看这个例子:
tree_string = '''
<root>
<must_wrap_anything_inside_this_element> asjkdnasd cass'a s' alsdnjl al <g/>
'asdasjkdhaisbd'assdaewken jka <x id='3'/> kfa;sdf lasd;f naisb fiuabewf <some_random_tag> random stuff </some_random_tag>
yet more text here
</must_wrap_anything_inside_this_element>
</root>
'''
tree = lxml.etree.fromstring(tree_string)
如何将 must_wrap_anything_inside_this_element
元素内的任何内容(是的任何内容 - 文本或其他元素)与另一个元素(如下面的 wrapper
)包裹起来,从而导致:
result = '''
<root>
<must_wrap_anything_inside_this_element>
<wrapper>
asjkdnasd cass'a s' alsdnjl al <g/>
'asdasjkdhaisbd'assdaewken jka <x id='3'/> kfa;sdf lasd;f naisb fiuabewf <some_random_tag> random stuff </some_random_tag>
yet more text here
</wrapper>
</must_wrap_anything_inside_this_element>
</root>
'''
我正在使用 Python 的 lxml 库。谢谢。
好吧,这需要一些体操,但是是可行的....
#locate your target element
target = tree.xpath('//must_wrap_anything_inside_this_element')[0]
#change its tag name....
target.tag="wrapper"
#now create a new element with old, top tag name
tree.insert(0,etree.fromstring('<must_wrap_anything_inside_this_element/>'))
#use the new element as the destination for the old element
destination=tree.xpath('//must_wrap_anything_inside_this_element')[0]
#finally, move the old element to its final resting place...
destination.insert(0,target)
print(etree.tostring(tree).decode())
输出是你想要的输出。