<blockquote>
<p><strong>Question</strong>: I would like to extract the text in a way that <code>"a": {"aaaa1", "aaaa2", "aaaa3"}, "b": {"bbbb"}, "c": {"cccc"}</code>.</p>
</blockquote>
<hr/>
<blockquote>
<p><strong>Note</strong>: If there are more than <strong>one</strong> tag <code><b></code> or <code><c></code> within <code>xml</code>, you have to handle this using a condition! </p>
</blockquote>
<pre><code>import lxml.etree as etree
xml = '<a>aaaa1<b>bbbb</b>aaaa2<c>cccc</c>aaaa3</a>'
# Parse xml to tree
tree = etree.fromstring(xml)
#root = tree.getroot()
# In this example, the first tag is the root Element
root = tree.tag
# Init result dict with this first Element tag:[text]
result = {tree.tag:[tree.text]}
# Loop every Element in the tree
for element in tree:
# Add this element to result tag:text
result.setdefault(element.tag, element.text)
# If this element has a .tail, append it to the root:[]
if element.tail:
result[root].append(element.tail)
print("result:{}".format(result))
>>>result:{'c': 'cccc', 'b': 'bbbb', 'a': ['aaaa1', 'aaaa2', 'aaaa3']}
</code></pre>
<p><strong><em>用Python:3.5</em>测试</p>