当缺少xml标记时,为什么我的python脚本中会返回NoneType

时间:2013-05-14 12:14:13

标签: python xsd lxml

这是xml

<FILE>
    <FILE_NAME>Test1.fits</FILE_NAME>
</FILE>
<FILE>
    <FILE_NAME>Test2.fits</FILE_NAME>
    <RESTRICTED>1</RESTRICTED>
</FILE>

这是xsd

的一部分
<xsd:complexType name="fileInfo">
    <xsd:sequence>
        <xsd:element name="FILE_NAME" type="xsd:string"
            minOccurs="1" maxOccurs="1" />
        <xsd:element name="RESTRICTED" type="xsd:integer"
        minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
</xsd:complexType>

这是使用lxml.etree

的python代码
isRestricted=0
restricted = 0
fileName = file.findtext('FILE_NAME')
restricted = file.findtext('RESTRICTED')
if restricted is not None:
    isRestricted = int(restricted)

以上作品但看起来很笨拙。但我真正想要分配的是,如果它在那里,则限制xml中的值,如果不存在,则为零。现在我已经在xsd中将它定义为一个整数,但我宁愿它是额外检查的布尔值。我尝试使用默认的findtext并获得

追踪(最近一次通话):   文件“file_tracking_populator.py”,第185行,in     print“isRestricted =”+ str(isResricted) NameError:未定义名称'isResricted'

我尝试在xsd中设置默认值,但也无效。

当我做的时候

isRestricted = file.findtext('RESTRICTED')

我得到了

追踪(最近一次通话):   文件“file_tracking_populator.py”,第199行,中     isRestricted); TypeError:%d format:需要一个数字,而不是NoneType

我做错了什么?

0 个答案:

没有答案