parse_xml()

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

string 解释为 XML 值,将值转换为 JSON,然后将值作为 dynamic 返回。

语法

parse_xml(xml)

详细了解语法约定

参数

客户 类型​​ 必需 说明
xml string ✔️ 要分析的 XML 格式字符串值。

返回

一个 dynamic 类型的对象(取决于 xml 的值);如果 XML 格式无效,则其类型为 null。

完成转换的方式如下:

XML JSON Access
<e/> { "e": null } o.e
<e>text</e> { "e": "text" } o.e
<e name="value" /> { "e":{"@name": "value"} } o.e["@name"]
<e name="value">text</e> { "e": { "@name": "value", "#text": "text" } } o.e["@name"] o.e["#text"]
<e> <a>text</a> <b>text</b> </e> { "e": { "a": "text", "b": "text" } } o.e.a o.e.b
<e> <a>text</a> <a>text</a> </e> { "e": { "a": ["text", "text"] } } o.e.a[0] o.e.a[1]
<e> text <a>text</a> </e> { "e": { "#text": "text", "a": "text" } } 1`o.e["#text"] o.e.a

注意

  • parse_xml 的最大输入 string 长度为 1 MB(1,048,576 字节)。 更长的字符串解释会生成 null 对象。
  • 只会转换元素节点、属性和文本节点。 将跳过其他所有内容。

示例

在以下示例中,如果 context_custom_metrics 是类似如下的 string

<?xml version="1.0" encoding="UTF-8"?>
<duration>
    <value>118.0</value>
    <count>5.0</count>
    <min>100.0</min>
    <max>150.0</max>
    <stdDev>0.0</stdDev>
    <sampledValue>118.0</sampledValue>
    <sum>118.0</sum>
</duration>

则下面的 CSL 片段会将 XML 转换为以下 JSON:

{
    "duration": {
        "value": 118.0,
        "count": 5.0,
        "min": 100.0,
        "max": 150.0,
        "stdDev": 0.0,
        "sampledValue": 118.0,
        "sum": 118.0
    }
}

此外还会检索对象中 duration 槽的值,并从中检索两个槽:duration.valueduration.min(分别为 118.0100.0)。

T
| extend d=parse_xml(context_custom_metrics) 
| extend duration_value=d.duration.value, duration_min=d["duration"]["min"]