使用JavaScript获取XML文件的子节点值

3

我有一个像这样的XML文件:

<Factory>
<Limits>
  <Point X="92" Y="489"/>
  <Point X="570" Y="487"/>
  <Point X="570" Y="138"/>
  <Point X="92" Y="140"/>
  <Point X="92" Y="139"/>
</Limits>
<Cells>
  <Cell>
    <Point X="358" Y="138"/>
    <Point X="361" Y="487"/>
    <Point X="570" Y="487"/>
    <Point X="570" Y="138"/>
    <Point X="358" Y="138"/>
  </Cell>
  <Cell>
    <Point X="311" Y="139"/>
    <Point X="311" Y="488"/>
    <Point X="92" Y="489"/>
    <Point X="92" Y="140"/>
    <Point X="311" Y="139"/>
  </Cell>
</Cells>

我正在尝试使用Javascript获取“Limits”中每个“Point”的X和Y值(而不是“Cell”中的值)。我看到了很多使用getElementByTagName、childNodes等方法的示例,但我无法弄清楚如何获取我要查找的数据。 我想这样做可能有效:

var M = xmlDoc.getElementsByTagName("Limits")[0].childNodes;
for (i=0;i<M.length;i++){
  console.log(M[i].childNodes.item(0));
}

我尝试了几种方法,但最终要么得到 null 值,要么出现错误。

有没有简单的方法来实现我需要的功能?


1
需要这样写:<Point>数据</Point> - coolguy
1
你能使用 jQuery 解决方案吗? - Manish Mishra
是的,我可以使用jQuery。 - phil vd
@ubercooluk 很遗憾,XML 是由另一个应用程序生成的,我无法更改它的制作方式。 - phil vd
2个回答

3
您需要获取属性。使用 JavaScript 可以这样做:
M[i].getAttribute("X");

使用jQuery:

M[i].attr("X");

谢谢,getAttribute在M[i]上可以工作,但在M[i].childNodes[j]上无法工作。有什么想法吗? - phil vd
1
因为没有childNodes。M [i]是“Point”标记,它没有子元素。 - Th0rndike
好的,谢谢。问题是现在我得到了“getAttribute不是一个函数”的错误(使用火狐浏览器)。编辑:算了,这是与火狐浏览器相关的问题,我必须添加一个M [i] .nodeType == 1条件,现在它可以正常工作! - phil vd
已完成,除了点赞因为我需要更多的声望。 - phil vd

0
var M = xmlDoc.getElementsByTagName("Limits");
for (i = 0; i < M.length; i++){
   for(var j = 0; j < M[i].childNodes.length; j++){
      console.log(M[i].childNodes[j].getAttribute('X'));
      console.log(M[i].childNodes[j].getAttribute('Y'));
   }
}

谢谢,但是当我尝试这个时,它给了我一个错误:TypeError: M[i].childNodes[j].getAttribute不是一个函数(我正在使用火狐浏览器) - phil vd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接