问题描述
我有以下 XML 文件作为输入:
I have the following XML file as input:
<Test> <callEvents> <moc> <causeForTermination>0</causeForTermination> <serviceCode> <teleServiceCode>11</teleServiceCode> </serviceCode> <dialledDigits>5555555</dialledDigits> <connectedNumber>77777</connectedNumber> </moc> <moc> <causeForTermination>0</causeForTermination> <serviceCode> <teleServiceCode>11</teleServiceCode> </serviceCode> <dialledDigits>2222222</dialledDigits> </moc> </callEvents> <callEventsCount>100</callEventsCount> </Test>
我想输出 dialledDigits 的所有值.但是,我的代码只显示 dialledDigits 的第一个实例.
I want to output all the values for dialledDigits. However, my code only displays the first instance of dialledDigits.
dialledDigits {} 5555555
我想要的输出应该包含这两个实例.
My desired output should contain both instances.
dialledDigits {} 5555555 dialledDigits {} 2222222
这是我的代码
import xml.etree.ElementTree as ET tree = ET.parse('as.xml') root = tree.getroot() callevent=root.find('callEvents') Moc1=callevent.find('moc') for node in Moc1.getiterator(): if node.tag=='dialledDigits': print node.tag, node.attrib, node.text
推荐答案
使用findall:
moc1 = callevent.findall('moc') for moc in moc1: for node in moc.getiterator(): if node.tag=='dialledDigits': print node.tag, node.attrib, node.text
输出:
dialledDigits {} 5555555 dialledDigits {} 2222222