javascript - XML 解析带有属性的 header ?

标签 javascript xml

我正在使用 Javascript 中的 XML 代码来尝试创建热图,XML 如下所示:

<trk>
 <name>Oscar</name>
 <trkseg>
 <trkpt lat="20.922436" lon="-32.950274">
      <ele>35.23</ele>
      <time>2013-04-28T09:23:11Z</time>
  </trkpt>
  <trkpt lat="21.231232" lon="-30.9123123">
      <ele>35.23</ele>
      <time>2013-04-28T09:23:11Z</time>
  </trkpt>
  </trkseg>
</trk>

但我似乎无法定位“trkpt”,因为它包含 lat= 和 lon= 值,这总是不同的。我如何定位该 header ?我尝试过使用:

getElementsByTagName("trkpt")

但它找不到信息 - 我在这里缺少什么?

感谢您的帮助。

更新

解释我到目前为止所尝试的代码片段:

var xmlParsing = new XMLHttpRequest();
var xmlDoc = "Hello";
var readyString = "asd";

xmlParsing.open("GET","3.xml", false);
xmlParsing.send();

xmlDoc = xmlParsing.responseXML;


var x=xmlDoc.getElementsByTagName("trk");
var y = xmlDoc.getElementsByTagName("trkseg");  

for (i=0;i<x.length;i++){ 



  document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);

  document.write(": <em>");

  for ( e=0; e < y.length; e++) {
  document.write(y[e].getElementsByTagName("trkpt")[0].childNodes[0].nodeValue);
  }

  document.write("</em> <br>");
  }

这主要是为了尝试打印这些值来看看我在做什么。

结果返回:

Oscar nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull

最佳答案

问题在于:

y[e].getElementsByTagName("trkpt")[0].childNodes[0].nodeValue

此元素的 childNodes 不是您所期望的。如果您这样做:

console.log(y[e].getElementsByTagName("trkpt")[0].childNodes);

然后您将看到以下内容:

[text, ele, text, time, text]

您需要过滤掉文本节点。您可以尝试使用:

y[e].getElementsByTagName("trkpt")[0].firstElementChild.textContent

但是如果您想要其他节点,那么您应该循环并过滤掉文本节点:

var children = y[e].getElementsByTagName("trkpt")[0].childNodes;
for(var c=0; c < children.length; c++){
    if(children[c].nodeType == Node.ELEMENT_NODE){
        // Do whatever
        console.log(children[c].textContent);
    }
}

关于javascript - XML 解析带有属性的 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21858654/

相关文章:

javascript - 如果 .div.fixed :active then add border to main div (how to? )

javascript - 检查组中的单选按钮是否已被选中

python - 为什么 etree.tostring() 不适用于不同的方法?

php - XML 解析速度是否足以处理 i18n/l10n 和其他任务,或者我应该使用 MySQL?

c++ - 有没有办法修改样式表,以便将带有空标签的 XML 文档转换为 <tag/>?

c# - 使用 XMLHttpRequest 将带有参数的数据发送回 Web 服务器

javascript - 简单的字符串拆分返回对象而不是数组

javascript - 将 jQuery 函数分配给变量不起作用,但包装它可以

java - 如何使用 XPath 提取 XML 表数据

java - 如何将未转义的 XML 写入 XMLStreamWriter?