为什么在python脚本中缺少xml标记时会返回NoneType

2024-09-29 21:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这是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文件你知道吗

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

上面的工作,但看起来笨拙。但我真正想分配的是限制xml中的值(如果存在),或者限制不存在的值(如果不存在)。现在我已经在xsd中将它定义为一个整数,但是我更希望它是布尔值,以便进行额外的检查。我试着用默认的findtext

回溯(最近一次呼叫): 文件“文件跟踪”_填充器.py“,第185行,in print“isRestricted=”+str(isRestricted) 名称错误:未定义名称“IsResRestricted”

我尝试在xsd中设置一个默认值,但也没有成功。你知道吗

当我这么做的时候

isRestricted = file.findtext('RESTRICTED')

我得到了

回溯(最近一次呼叫): 文件“文件跟踪”_填充器.py,第199行 限制); 类型错误:%d格式:需要数字,而不是NoneType

我做错什么了?你知道吗


Tags: 文件namexmlelementfilexsdsequencerestricted

热门问题