Javascript IE9未获得';儿童';XML节点的构造

Javascript IE9未获得';儿童';XML节点的构造,javascript,xml,internet-explorer,internet-explorer-9,children,Javascript,Xml,Internet Explorer,Internet Explorer 9,Children,javascript中名为RoomPriceInfo的变量中包含以下XML: <?xml version="1.0" encoding="UTF-8"?> <BkgItemHotelRoomPrices CurrCode="EUR"> <RoomType Code="DB" Count="1" Desc="Double" Age="0"> <PriceInfo EndDate="2011-12-17" AgentMarkup="0.0" Ma

javascript中名为RoomPriceInfo的变量中包含以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<BkgItemHotelRoomPrices CurrCode="EUR">
  <RoomType Code="DB" Count="1" Desc="Double" Age="0">
    <PriceInfo EndDate="2011-12-17" AgentMarkup="0.0" MarkupPerc="0.1075" FitRdg="0.25"  MarkupPrice="48.73" AgentPrice="48.75" StartDate="2011-12-11" Nights="7" FitRdgPrice="48.75" CurrDec="2" CurrDecPrice="48.75" SuppPrice="44.0"/>
  </RoomType>
</BkgItemHotelRoomPrices>
在Ubuntu上的FF7和WinXP上的FF8下,我得到一个正确的警报1。然而,在WinXP上的IE8和Windows 7上的IE9下,什么都不会发生。它只是静静地死去


有人能解释一下吗?如果我对DOM对象执行了一个
getElementById
,然后请求该对象的子对象,那么IE8和IE9的行为就正常了。

这可能无法解决问题,但是。。应该使用childNodes而不是children属性来访问子节点。我不确定哪一个更好,但我确定childNodes得到了广泛的支持。。可能是微软也这样做了

Internet Explorer(包括版本11!)不支持
.children
属性om XML元素

如果要获取子元素的数量,请使用(IE9+):

element.childrence.length;//不适用于IE中的XML元素
element.childElementCount;//适用于所有浏览器
如果只想知道元素是否有子元素,还可以检查(或)是否为null。IE9+支持此属性:

element.children.length==0;//所有真正的浏览器
element.firstElementChild!==空;//IE 9+
如果要遍历XML节点的所有子元素,请使用
childNodes
,并通过其
节点类型排除非元素节点:

for(变量i=0,len=element.childNodes.length;i
请不要在您的问题上签名,我们可以在右下角的用户徽章上看到您的姓名。有关更多详细信息,请参阅常见问题解答:
childNodes
还包括文本节点(不仅仅是元素),因此这不是一个好的通用解决方案。
DBRoomPrice = RoomPriceInfo.doXPath("//RoomType[@Code='DB']");
alert(DBRoomPrice[0].children.length);