我试图获取一个开放的XML标签和它的对应闭合标签之间的全部内容。在简单的情况下,例如以下标题
title
,获取内容很容易,但如果使用了混合内容并且我想要保留内部标签,那么如何获取标签之间的全部内容呢?<?xml version="1.0" encoding="UTF-8"?>
<review>
<title>Some testing stuff</title>
<text sometimes="attribute">Some text with <extradata>data</extradata> in it.
It spans <sometag>multiple lines: <tag>one</tag>, <tag>two</tag>
or more</sometag>.</text>
</review>
我想要的是两个text
标签之间的内容,包括任何标签:其中有一些包含<extradata>data</extradata>的文本。它跨越<sometag>多行:<tag>one</tag>,<tag>two</tag>或更多</sometag>
目前我使用正则表达式,但这种方式变得有点混乱,而且我不喜欢这种方法。我倾向于基于XML解析器的解决方案。我查看了minidom
、etree
、lxml
和BeautifulSoup
,但没有找到针对此情况(包括内部标签的全部内容)的解决方案。
''.join(el if isinstance(el, str) else lxml.etree.tostring(el, with_tail=False) for el in doc.xpath('/review/text/node()'))
- Charles Duffytostring
。 - Marcintostring
抱怨无法序列化_ElementStringResult
。 - MattH