0

私は本当にpythonが初めてです。これは実際にそれを使用した最初のスクリプトであり、そのほとんどはコピーされた例です。属性を解析する必要がある xml ファイルがあります。私はその部分を理解しましたが、私の問題は、その属性がxmlファイルに常に存在するとは限らないことです. ここに私のコードがあります:

#!/usr/bin/python
#import library to do http requests:
import urllib2
import os

#import easy to use xml parser called minidom:
from xml.dom.minidom import parseString

#download the history:
history = urllib2.urlopen('http://192.168.1.1/example.xml')
#convert to string:
historydata = history.read()
history.close()

#parse the xml you downloaded
dom = parseString(historydata)
xmlTagHistory = dom.getElementsByTagName('loaded')[0].toxml()
xmlDataHistory=xmlTagHistory.replace('<loaded>','').replace('</loaded>','')

print xmlDataHistory

属性が存在しない場合、「IndexError: list index out of range」が返されます。このコードで私がやろうとしているのは、属性が存在しない場合、または属性が false の場合にコマンドを実行することです。私がおそらく抱えているもう1つの問題は、その属性が複数回出現することがあるため、「ロード済み」のインスタンスが1つでもtrueである場合、コマンドを実行しないことでそのシナリオを説明する必要があることです。私が言ったように、私はこれで本当に新しいので、私が得ることができるすべての助けを使うことができました. とても有難い。

4

2 に答える 2

2

リストを返すのでdom.getElementsByTagName('loaded')、関数でリストのサイズを確認するだけですlen(list)。リストの長さが 0 を超える場合にのみ、[0] の逆参照を行うことが有効です。

別の方法は、コードを try/exception ペアでラップし、解析例外をキャッチすることです。

于 2012-08-26T17:42:40.957 に答える
1

http://docs.python.org/tutorial/errors.html

try と except を使用すると、必要なものすべてを処理できるはずです。

于 2012-08-26T17:44:52.030 に答える