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

解析XML数据时,用get函数获取EXILITY值返回null的问题

解决方案

问题根源

你用get(column_name, "EXILITY")返回null的原因很明确:你的数据是对象组成的数组,"EXILITY"是对象内部@字段的取值,不是数组的键或索引。直接按值传get函数,自然找不到对应元素;用索引又会因为元素位置变动失效。

实现方案

下面针对两种常见数据处理场景给出具体代码:

场景1:Excel/Power BI(Power Query)

假设存储数组的列名为Data,添加自定义列时用以下公式:

= List.Select([Data], each _[@] = "EXILITY"){0}[$]
  • 逻辑拆解:
    1. List.Select([Data], each _[@] = "EXILITY"):从数组里筛选出所有@字段等于"EXILITY"的对象
    2. {0}:取筛选结果的第一个元素(你的数据里只有一个匹配项)
    3. [$]:提取该对象的$字段值,也就是你要的1

如果要避免无匹配项时报错,可加判断:

= let 
    filtered = List.Select([Data], each _[@] = "EXILITY")
  in
    if List.Count(filtered) > 0 then filtered{0}[$] else null

场景2:JavaScript脚本处理

如果是用JS处理这个数组,直接用find方法定位:

const targetItem = yourArray.find(item => item["@"] === "EXILITY");
const targetValue = targetItem ? targetItem["$"] : null;
  • 逻辑拆解:
    1. find遍历数组,返回第一个符合@字段为"EXILITY"的对象
    2. 三元运算符处理无匹配的情况,避免抛出错误

核心思路

不管用哪种工具,核心都是先根据@字段的值锁定目标对象,再提取对应$字段,彻底摆脱元素位置的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:00:48