是示例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>
答案 0 :(得分:1)
这可能会有所帮助。
<强>演示:强>
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