我正在尝试使用下面提供的python代码读取xml文件email.xml
(下面的数据),我无法打印xml文件中的实际数据,但得到以下输出。我哪里错了?
当前输出:
xmlfile
<open file 'email.xml', mode 'r' at 0x0226AF98>
[<DOM Element: to at 0x231d620>]
[<DOM Element: cc at 0x231d6c0>]
[<DOM Element: bcc at 0x231d760>]
PYTHON CODE :
import xml.dom.minidom as minidom
def getemaildata():
# Open the XML file
xmlfile = open('email.xml','r')
print "xmlfile"
print xmlfile
dom = minidom.parse(xmlfile)
email=dom.getElementsByTagName('email')
for node in email:
toemail=dom.getElementsByTagName('to')
print toemail
ccemail=dom.getElementsByTagName('cc')
print ccemail
bccemail=dom.getElementsByTagName('bcc')
print bccemail
return (toemail,ccemail,bccemail)
def main ():
(To,CC,BCC)=getemaildata()
if __name__ == '__main__':
main()
email.xml
档案:
<email>
<to>data@company.com;data.stability@company.com;
data.sns@company.com;data.pes@company.com;</to>
<cc> data.team </cc>
<bcc>data@company.com</bcc>
</email>
答案 0 :(得分:2)
您将从XML解析器中获取“Element”对象的列表。您需要进一步迭代才能到达实际的“文本”节点。
例如:
# this returns a list of all Elements that have the tag "to"
toemail=dom.getElementsByTagName('to')
# Here we take the first node returned with tag 'to', then it's first child node
textnode = toemail[0].childNodes[0]
# print the data in the textnode
print textnode.data
清除文本节点中的地址:
for address in textnode.data.split(';'):
if address == '':
# Catch empty entries as a result of trailing ;
continue
email = i.strip().strip('\n')
print email