这是我在 Python 和从 XML 文件中提取信息的第一次尝试,因此对于这个问题的新手性质表示歉意。
我想从一个 XML 文件中提取作者姓名,其中信息的结构如下:
<Author ValidYN="Y">
<LastName>Duck</LastName>
<ForeName>Donald</ForeName>
<Initials>D</Initials>
</Author>
每隔一段时间就会有一个如下所示的条目:
<Author ValidYN="Y">
<CollectiveName>Some Corp</CollectiveName>
</Author>
我的代码在第一个示例中运行良好,但如果遇到第二个示例,则会失败,并显示AttributeError: 'NoneType' object has no attribute 'text'消息。根据我对正在发生的事情的基本理解,我认为错误的出现仅仅是因为它找不到任何东西。我无法解决的是如何让它忽略第二个示例并继续寻找下一位作者。
这是代码:
import xml.etree.ElementTree as etree
infile = r'C:\temp\test.xml'
authors = []
tree = etree.parse(infile)
root = tree.getroot()
for elem in tree.iter(tag='Author'):
sn = elem.find('LastName').text
fn = elem.find('Initials').text
authors.append(fn + ' ' + sn)
for x in authors:
print (x)
任何帮助都感激不尽!