Xml.Document vs Xml.Tables, рекурсивный обход и слетевшая кодировка
#АнатомияФункций - Xml.Document
Всем привет!
В чат подкинули задачку про сбор данных из xml. Вроде всё просто, но пришлось повозиться с именами файлов, осуществить рекурсивный обход и оформить пару функций. По этому поводу код:
Ну а что тут к чему смотрите, как всегда, на Ютубе (https://youtu.be/OsfOCQZvBRM)
Лайк, коммент, подписка приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik
#АнатомияФункций - Xml.Document
Всем привет!
В чат подкинули задачку про сбор данных из xml. Вроде всё просто, но пришлось повозиться с именами файлов, осуществить рекурсивный обход и оформить пару функций. По этому поводу код:
let
f=(x)=>Text.FromBinary(Text.ToBinary(x,866)),
g=(x)=>[a=Table.Buffer(x[[Name],[Value]]),
b=Table.SelectRows(a,(r)=>r[Value] is table),
c=Table.SelectRows(a,(r)=>not (r[Value] is table)),
d=if Table.RowCount(b)=0 then a else c & @g(Table.Combine(Table.ToList(b,h)))][d],
h=(x)=>Table.TransformColumns(x{1},{"Name",(r)=>x{0}&"/"&r}),
from = Folder.Files("C:\Users\muzyk\Desktop\XML_файлы")[[Name],[Content]],
tr = Table.TransformColumns(from,{{"Name",f},{"Content",(x)=>Record.FromTable(g(Xml.Document(x)))}}),
nms = List.Distinct(List.Combine(List.Transform(tr[Content],Record.FieldNames))),
to = Table.ExpandRecordColumn(tr,"Content",nms)
in
to
Ну а что тут к чему смотрите, как всегда, на Ютубе (https://youtu.be/OsfOCQZvBRM)
Лайк, коммент, подписка приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik