这是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
我做错了什么?