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)

上記は機能しますが、見た目が悪いです。しかし、私が本当に割り当てたいのは、 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 ではなく数値が必要です

私は何を間違っていますか?

4

0 に答える 0