【问题标题】:Finding values in XML document using Python使用 Python 在 XML 文档中查找值
【发布时间】:2013-08-01 11:46:28
【问题描述】:

我有以下代码试图从 XML 文档中获取值:

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

【问题讨论】:

  • 您是否能够解析您提供的 XML? minidom.parse() 接受文件的必需参数。显然,字符串xml 不是该文件的有效表示。请尝试提供一个工作示例,以便在您的问题上获得更好的帮助。

标签: python xml dom minidom


【解决方案1】:

您似乎正在搜索错误的 XML 节点。检查以下行:

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

您可能正在寻找以下内容:

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

注意:Document.getElementsByTagNameDocument.getElementsByTagNameNSElement.getElementsByTagNameElement.getElementsByTagNameNS 返回一个节点列表,而不仅仅是一个标量值。

【讨论】:

  • (u'Home Team: 1. FSV Mainz 05', u'4', 'vs', u'1', u'Away Team: TuS Koblenz') 我得到了这个结果!谢谢!关于如何在开始时摆脱 u 的任何想法?
  • 尝试使用搜索或谷歌。谷歌的第一个答案 - Python string prints as [u'String']
猜你喜欢
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多