Xml.Document – рекурсивный обход полей
#АнатомияФункций - Xml.Document, рекурсия
Всем привет!
В чат закинули задачку на рекурсивный обход полей внутри Xml-документа.
Собственно, код:
Ну а что тут к чему смотрите, как всегда, на Ютубе
Лайк, коммент, подписка приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik
#АнатомияФункций - Xml.Document, рекурсия
Всем привет!
В чат закинули задачку на рекурсивный обход полей внутри Xml-документа.
Собственно, код:
let
lst = {"Name", "Value", "Attributes"},
f=(x,y)=>[
tr = Table.TransformColumns(x,{"Attributes",(x)=>if x is table then Record.FromTable(x) else []}),
nms = List.Buffer(List.Distinct(List.Combine(List.Transform(tr[Attributes],Record.FieldNames)))),
nms1 = List.Buffer(Table.ColumnNames(tr)),
nms2 = List.Transform(nms,(x)=>if List.Contains(nms1,x) then x&Text.From(y) else x),
exp = Table.ExpandRecordColumn(tr,"Attributes",nms,nms2),
exp1 = Table.ExpandTableColumn(exp,"Value",lst,List.ReplaceValue(lst,"Name","Name"&Text.From(y),Replacer.ReplaceValue)),
res = if List.NonNullCount(exp1[Attributes]) = 0 then exp1 else @f(exp1,y+1)][res],
from = Xml.Document(File.Contents("C:\путь\Пример файла.xml"), 1251),
to = f(from,1)
in
to
Ну а что тут к чему смотрите, как всегда, на Ютубе
Лайк, коммент, подписка приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik