这是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 行,打印“isRestricted=”+ str(isResricted) NameError: name 'isResricted' is not defined
我尝试在 xsd 中设置一个默认值,但这也不起作用。
当我这样做的时候
isRestricted = file.findtext('RESTRICTED')
我有
Traceback(最近一次调用最后一次): 文件“file_tracking_populator.py”,第 199 行,在 isRestricted 中);类型错误:%d 格式:需要一个数字,而不是 NoneType
我究竟做错了什么?