我有一个我正在尝试解析的xml文件。这是一个样本
</Event>
-<Event timestamp="2016-08-14T14:23:33.634" id="1713385925"
version="1471181110290" last_modified="2016-08-14T14:25:11" y="11.0"
x="89.7" outcome="0" team_id="148" player_id="51327" sec="8" min="23"
period_id="1" type_id="4" event_id="205">
<Q id="733814222" qualifier_id="265"/>
<Q id="481660420" qualifier_id="286"/>
<Q id="813378778" qualifier_id="152"/>
<Q id="570443899" qualifier_id="56" value="Right"/>
<Q id="420312891" qualifier_id="233" value="248"/>
<Q id="1186861264" qualifier_id="13"/>
</Event>
-<Event timestamp="2016-08-14T14:23:33.634" id="1635888622"
version="1471181110289" last_modified="2016-08-14T14:25:11" y="89.0"
x="10.3" outcome="1" team_id="143" player_id="169007" sec="8" min="23"
period_id="1" type_id="4" event_id="248">
<Q id="1871787686" qualifier_id="56" value="Back"/>
<Q id="176295814" qualifier_id="13"/>
<Q id="69346842" qualifier_id="233" value="205"/>
<Q id="1588029344" qualifier_id="265"/>
<Q id="559785299" qualifier_id="285"/>
<Q id="380723313" qualifier_id="152"/>
它充满了这样的事件。我可以访问所有其他属性(outcome
,type_id
等)和子标签,但不能为player_id
的属性值执行此操作。错误是 - 这里是我用来解析它的xmldom代码的示例。
xml = xmldoc.getElementsByTagName("Games")[0]
Events = xml.getElementsByTagName("Event")
for event in Events:
typeid = event.attributes["type_id"]
typeidval = typeid.value
player = event.attributes["player_id"]
playeridval = player.value
teamid = event.attributes["team_id"]
teamidval = teamid.value
outcomeid = event.attributes["outcome"]
outcomeidval = outcomeid.value
有人可以帮我解决xmldom / minidom代码来解决这个问题吗?我究竟做错了什么?
一个丑陋的修复方法是处理player_id
属性的异常,并在抛出异常时将值设置为""
:
try:
player = event.attributes["player_id"]
playeridval = player.value
except:
playeridval = ""
更清洁的方法:
player = event.attributes.get("player_id",None)
playeridval = player.value if player else ""