2013-07-31 4 views
0

Я следующий код, который пытается получить значения из документа XML:значения Нахождение в документе XML с помощью Python

from xml.dom import minidom 
xml = """<SoccerFeed TimeStamp="20130328T152947+0000"> 
      <SoccerDocument uID="f131897" Type="Result" /> 
      <Competition uID="c87"> 
      <MatchData> 
       <MatchInfo TimeStamp="20070812T144737+0100" Weather="Windy"Period="FullTime" MatchType="Regular" /> 
       <MatchOfficial uID="o11068"/> 
       <Stat Type="match_time">91</Stat> 
       <TeamData TeamRef="t810" Side="Home" Score="4" /> 
       <TeamData TeamRef="t2012" Side="Away" Score="1" /> 
      </MatchData> 
      <Team uID="t810" /> 
      <Team uID="t2012" /> 
      <Venue uID="v2158" /> 
      </SoccerDocument> 
     </SoccerFeed>""" 

xmldoc = minidom.parseString(xml) 
soccerfeed = xmldoc.getElementsByTagName("SoccerFeed")[0] 
soccerdocument = soccerfeed.getElementsByTagName("SoccerDocument")[0] 

#Match Data 
MatchData = soccerdocument.getElementsByTagName("MatchData")[0] 
MatchInfo = MatchData.getElementsByTagName("MatchInfo")[0] 
Goal = MatchData.getElementsByTagNameNS("Side", "Score") 

Goal в настоящее время установлен в [], но я хотел бы получить значение оценка, которая 4.

+2

Вы даже можете разобрать XML, который вы представили? 'minidom.parse()' принимает требуемый параметр файла. Очевидно, что строка 'xml' является недопустимым представлением этого файла. Пожалуйста, попробуйте предоставить рабочий образец, чтобы лучше помочь в вопросе. – artdanil

ответ

0

Похоже, что вы ищете неправильный узел XML. Проверьте следующие строки:

Goal = MatchData.getElementsByTagNameNS("Side", "Score") 

Вы, вероятно, ищете следующее:

Goal = MatchData.getElementsByTagName("TeamData")[0].getAttribute("Score") 

ПРИМЕЧАНИЕ:Document.getElementsByTagName, Document.getElementsByTagNameNS, Element.getElementsByTagName, Element.getElementsByTagNameNS возвращает список узлов, а не только скалярное значение.

+0

(u'Home Team: 1. FSV Mainz 05 ', u'4', 'vs', u'1 ', u'Away Team: TuS Koblenz') Я получил этот результат! Благодаря! Любые идеи о том, как я могу избавиться от u в начале? –

+0

Попробуйте использовать поиск или Google. Первый ответ в Google - [строка Python печатает как \ [u'String '\]] (http://stackoverflow.com/q/599625/214178) – artdanil