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

React使用axios与XMLParser将XML转为指定结构JSON数组

你拿到的每个Event节点的children数组中已经包含了需要的Date、Description字段数据,只需对原始解析结果做一层映射转换即可得到目标结构,修改后的代码如下:

await axios
  .get(XMLData, {
    // 原代码请求头配置位置错误,需放在headers字段下
    headers: {
      "Content-Type": "application/xml; charset=utf-8",
    }
  })
  .then((response) => {
    const xmlDoc = new XMLParser().parseFromString(response.data);
    const rawEventList = xmlDoc.getElementsByTagName("Event");
    // 转换为仅包含Date、Description的对象数组
    const formattedEventList = rawEventList.map(eventNode => {
      const targetEvent = {};
      // 遍历子节点匹配所需字段
      eventNode.children.forEach(childNode => {
        if (['Date', 'Description'].includes(childNode.name)) {
          targetEvent[childNode.name] = childNode.value;
        }
      });
      return targetEvent;
    });
    // setState为异步操作,需在回调函数中获取更新后的状态
    this.setState({ Event: formattedEventList }, () => {
      console.log("格式化后的数据", this.state.Event);
    });
  });

如果你的XML结构固定,Event节点下的子节点永远是Date在前、Description在后,也可以用更简洁的索引取值写法:

const formattedEventList = rawEventList.map(eventNode => ({
  Date: eventNode.children[0].value,
  Description: eventNode.children[1].value
}))

该写法性能更高但兼容性弱,若后续XML结构变动、子节点顺序调整会导致取值错误,推荐优先使用按节点名称匹配的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:24:07