如何使用KQLextractjson函数引用以@符号开头的XML属性



我正在尝试访问Azure KQL中的一个XML元素属性,并使用parse_XML将其转换为JSON。然而,extractjson函数似乎不喜欢使用@符号。请参阅下面的代码片段。

let input_xml="<NetAmount currency="USD">150.00</NetAmount>";
let sJson=tostring(parse_xml(input_xml));
let amount=extractjson("$.NetAmount.#text", sJson);
let sCurrency=extractjson($.NetAmount.@currency, sJson);
print input_xml, amount,  sJson //, sCurrency;

如果你运行上面的代码,它就会工作。但是,如果您在打印语句中对sCurrent的引用中进行了注释,它会弹出一个错误,内容为:

运行查询时出现问题。请稍后再试

你知道如何在extractjson函数中引用currency属性吗?

您不需要使用extract_json(),只需使用动态对象访问器即可:https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalar-data-types/dynamic#dynamic-对象访问者

print input_xml = "<NetAmount currency="USD">150.00</NetAmount>"
| project sJson = parse_xml(input_xml)
| project amount = sJson.NetAmount['#text'], currency = sJson.NetAmount['@currency']
货币
金额
150.00美元