微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Javascript从XML文档中提取值

我试图从xml文档中提取值并打印它们.
我还想计算孩子的数量(子节点)
每个节点都有.这是第一个标签有2个子标签,第二个标签有3个.

这是XML文档

<?xml version="1.0" ?> 
  <A>
  <a1>a1</a1> 
  <a2>a2</a2> 
  <B>
  <C>2</C> 
  <C>3</C> 
  </B>
  <B>
  <C>4</C> 
  <C>5</C> 
  <C>6</C>
  </B>
  </A>

这是我的JAVASCRIPT文件

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","extractexample.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
xmlObj=xmlDoc.documentElement;
document.write(xmlDoc.getElementsByTagName("B")[0].childNodes[0].nodeValue);

解决方法:

Element.childNodes方法返回所有类型的节点,包括空白文本节点.它可能不是你想要的.如果您只关心子元素的数量,请使用childElementCount.

var b = xmlDoc.getElementsByTagName("B")[0];
alert(b.childElementCount); //should output 2

我没有尝试在IE中,它可能无法正常工作.
否则,如果您需要元素列表,请使用非HTML文档不支持的子项.你可以试试这个功能

function getChildren(element) {
  var nodes = element.childNodes;
  var children = [];
  for (var i = 0; i < nodes.length; i++) {
    if (nodes[i].nodeType == Node.ELEMENT_NODE) children.push(nodes[i]);
  }
  return children;
}

getChildren(b).length;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。