ここに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)
上記は機能しますが、見た目が悪いです。しかし、私が本当に割り当てたいのは、 isRestricted が存在する場合はxmlの値、存在しない場合はゼロです。現在、xsd で整数として定義していますが、追加のチェックのためにブール値にしたいと考えています。デフォルトでfindtextを使用してみましたが、
トレースバック (最新の呼び出しが最後): ファイル "file_tracking_populator.py"、185 行目、出力 "isRestricted=" + str(isResricted) NameError: 名前 'isResricted' が定義されていません
xsdにデフォルトを入れてみましたが、それもうまくいきませんでした。
私がしたとき
isRestricted = file.findtext('RESTRICTED')
私は得た
トレースバック (最新の呼び出しが最後): ファイル "file_tracking_populator.py"、199 行目、 isRestricted 内); TypeError: %d 形式: NoneType ではなく数値が必要です
私は何を間違っていますか?