Skip to content

Instantly share code, notes, and snippets.

@kontur32
Created April 8, 2019 07:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kontur32/1984ee5ecf194f718e8b9210bf29577a to your computer and use it in GitHub Desktop.
Save kontur32/1984ee5ecf194f718e8b9210bf29577a to your computer and use it in GitHub Desktop.
Преобразовать xml в csv
let $items :=
<items>
<item>
<offer>4271</offer>
<param name="Короткое описание">Колготки женские TRENDY MELANGE 60, р.2, chocolate</param>
<param name="Материал">полиамид 50%; полиэстер 38%; эластан 12%</param>
<param name="Размер">2,3,4</param>
<param name="Цвет">chocolate,grafit,grey,melanzana,verde</param>
<param name="Плотность">60</param>
<price>235</price>
</item>
<item>
<offer>4271</offer>
<param name="Короткое описание">Колготки женские TRENDY MELANGE 60, р.2, chocolate</param>
<param name="Материал">полиамид 50%; полиэстер 38%; эластан 12%</param>
<param name="Размер">2,3,4</param>
<param name="Цвет">chocolate,grafit,grey,melanzana,verde</param>
<param name="Плотность">60</param>
<price>235</price>
</item>
</items>
let $csv :=
element { "csv" } {
element { "record"} {
element { "offer" } { "offer" },
element { "price" } { "price" },
for $p in $items/item[1]/param
count $c
return
element { "param-" || $c } { $p/@name/data() }
},
for $i in $items/item
return
element {"record"} {
element { "offer" } { $i/offer/text() },
element { "price" } { $i/price/text() },
for $p in $i/param
count $c
return
element { "param-" || $c } { $p/text() }
}
}
return
serialize( $csv, map{ "method" : "csv", 'csv': map { 'separator': 'tab' } } )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment