【问题标题】:how to extract values from an XML document using Javascript如何使用 Javascript 从 XML 文档中提取值
【发布时间】:2011-03-24 06:17:21
【问题描述】:

我正在尝试从 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);

【问题讨论】:

  • 您面临的问题是什么?
  • 你得到 AJAX 结果了吗?我的意思是,您的 xmlhttp.responseXML 中的 XML 文件。检查萤火虫。
  • 嗨,如果我写 document.write(xmlDoc.getElementsByTagName("C").length);这将我得到输出的标签总数计算为 5,这是正确的,但我想单独计算每个标签的子节点数。我不知道我应该为它写什么代码。
  • 请编辑您的问题以包含您的最后评论

标签: javascript xml


【解决方案1】:

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

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

我没有在IE中尝试过,它可能无法正常工作。 否则,如果你想要一个元素列表,请使用children children 非 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;

【讨论】:

    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2022-06-16
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多