Javascript 从节点子节点检索属性

Javascript 从节点子节点检索属性,javascript,xml,Javascript,Xml,我正在试验这种xml: <theFeed> <games> <game id="103" period="" clock=""> <team id="657" type="home" logo="1/12" score="46"/> <team id="740" type="visitor" seed="11" score="59"/> </game> </g

我正在试验这种xml:

<theFeed>
 <games>
    <game id="103"  period="" clock="">
        <team id="657" type="home" logo="1/12"  score="46"/>
        <team id="740" type="visitor"  seed="11" score="59"/>
    </game>
  </games>
</theFeed>
它崩溃了。使用
getAttributes
,我可以从父级很好地获取属性。。。 我做错什么了吗

var game = theXml.getElementsByTagName('game')[0];
var team = game.getElementsByTagName('team')[0];
var score = team.getAttribute('score');

console.log(game, team, score);
如果XML是有效的(我强制它是
文档
),它似乎工作得很好


希望这有帮助-ck

我认为您需要在路径中添加对documentElement的引用:

var Hlogo = theXml.documentElement.getElementsByTagName('game')[0].childNodes[0].getAttribute('score');

代码请修复您的格式抱歉,还遗漏了绝对有帮助的主节点,谢谢。所以xml不会在一行中读取所有这些内容……多么蹩脚。现在我明白了为什么JSON如此受欢迎了。@codewombat如果你是说链接你绝对可以做到:
var score=theXml.getElementsByTagName('game')[0]。getElementsByTagName('team')[0]。getAttribute('score')我只是按照我的方式来做,这样会更具可读性-ck@codewombat,当然可以,但是childNode[0]并不总是一个“元素”,它可能返回一个空文本节点,因此“查找”所需内容总是更安全的。。还有
.children
属性,该属性仅包含元素,但在不同浏览器之间的覆盖范围不一致(旧IE版本包括注释节点,FF<3.5中不存在)。所以,是的,
getElementsByTagName(…)
是一条路-ck@codewombat当前位置最后一句话绝对是您遇到问题的关键。
var Hlogo = theXml.documentElement.getElementsByTagName('game')[0].childNodes[0].getAttribute('score');