You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript读取XML中items标签下所有子标签的值

解决XML中读取<items>下所有子标签值的问题

嘿,我懂你不想逐个指定标签名的痛点!你已经成功拿到了XML文档和<items>节点,接下来只需要遍历它的子元素集合,就能批量提取所有子标签的值了。这里给你补全并优化代码:

var xmlDoc;
var xhr = new XMLHttpRequest();
xhr.open('GET', 'prueba.xml', true); // 显式声明异步请求,代码更清晰
xhr.onreadystatechange = function() {
  // 务必判断请求成功完成后再处理XML,避免报错
  if (xhr.readyState === 4 && xhr.status === 200) {
    xmlDoc = xhr.responseXML;
    var items = xmlDoc.getElementsByTagName("items")[0];
    
    // 遍历items下的所有直接子元素(只取标签节点,过滤空白文本节点)
    var childTags = items.children;
    for (var i = 0; i < childTags.length; i++) {
      var tagName = childTags[i].tagName;
      var tagValue = childTags[i].textContent.trim(); // 去除文本前后空白字符
      
      console.log(`${tagName}: ${tagValue}`);
      // 这里可以把值存入数组/对象,方便后续业务使用
    }
  }
};
xhr.send();

关键细节说明:

  • 用items.children替代childNodes:childNodes会包含换行、空格这类空白文本节点,children只返回元素类型的子节点,正好对应你要的子标签。
  • textContent兼容性拉满:相比innerText,它能在更多浏览器中稳定获取标签内的所有文本内容。
  • 加上trim()很实用:避免XML里的换行、缩进带来的不必要空格干扰。

进阶:如果<items>下有嵌套子标签

要是你的XML结构里<items>下还有多层嵌套标签,可以用递归函数一次性提取所有层级的标签值:

function extractAllTagValues(element) {
  var result = {};
  var childElements = element.children;
  for (var i = 0; i < childElements.length; i++) {
    var child = childElements[i];
    if (child.children.length > 0) {
      // 有子元素就递归提取,生成嵌套对象
      result[child.tagName] = extractAllTagValues(child);
    } else {
      result[child.tagName] = child.textContent.trim();
    }
  }
  return result;
}

// 使用示例:
var allItemData = extractAllTagValues(items);
console.log(allItemData); // 得到一个包含所有标签值的结构化对象

内容的提问来源于stack exchange,提问作者Waymas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:23:07