Поделиться через


parse_xml()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Интерпретирует string как XML-значение, преобразует значение в JSON и возвращает значение как dynamic.

Синтаксис

parse_xml(xml)

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
xml string ✔️ Значение строки в формате XML для синтаксического анализа.

Возвраты

Объект типа dynamic , который определяется значением XML или NULL, если формат XML является недопустимым.

Преобразование выполняется следующим образом:

XML JSON Открыть
<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.a.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.a.a

Примечание.

  • Максимальная длина parse_xml входных данных string составляет 1 МБ (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.value (118.0и duration.min 100.0соответственно).

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