0

这是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

我究竟做错了什么?

4

0 回答 0