下面是示例 xml。 我正在研究 xml.etree.ElementTree 模块而不是 lxml。
<data>
<AAA>
<CCC>
<BBB>This</BBB>
</CCC>
<CCC>
<BBB>is</BBB>
</CCC>
<CCC>
<BBB>test1</BBB>
</CCC>
</AAA>
<AAA>
<CCC>
<BBB>This is test</BBB>
</CCC>
</AAA>
<AAA>
<CCC>
<BBB>222222</BBB>
</CCC>
<CCC>
<BBB>333333</BBB>
</CCC>
</AAA>
<AAA>
<BBB>
<CCC>This is test</CCC>
</BBB>
</AAA>
</data>
我正在尝试收集 AAA 元素下 CCC 下 BBB 的所有文本。 但我不知道为什么它不起作用。启动时没有错误,但未收集文本。 我想知道为什么这段代码不能很好地工作。
BBB_collect = ''.join(BBB.itertext())
请检查下面
import xml.etree.ElementTree as ET
import re
f1 = open ("C:\\test\\Data.xml","r",encoding="utf=8")
f2 = open ("C:\\test\\output.xml","wt",encoding="utf=8")
doc = ET.parse("C:\\test\\Data.xml")
root = doc.getroot()
a = 0
try:
while True :
AAA = root.findall('AAA')[a]
for CCC in AAA.findall('CCC'):
for BBB in CCC.findall('BBB'):
BBB_collect = ''.join(BBB.itertext())
print(BBB_collect)
print('===============')
a = a+1
except IndexError :
pass
你能给我一些建议吗?这是怎么回事?
最终,这是我的目标。
<data>
<AAA>
<CCC>
<BBB>Thisistest1</BBB>
</CCC>
</AAA>
<AAA>
<CCC>
<BBB>This is test</BBB>
</CCC>
</AAA>
<AAA>
<CCC>
<BBB>222222333333</BBB>
</CCC>
</AAA>
<AAA>
<BBB>
<CCC>This is test</CCC>
</BBB>
</AAA>
</data>
最佳答案
这可能会有所帮助。
演示:
import xml.etree.ElementTree as ET
doc = ET.fromstring(data)
for AAA in doc.findall('AAA'):
bText = ""
for CCC in AAA.findall('CCC'):
for BBB in CCC.findall('BBB'):
bText += BBB.text
print(bText)
输出:
Thisistest1
This is test
222222333333
This is test
关于python - 如何收集同一元素级别的文本节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463394/