首页 > 解决方案 > 使用 XQuery 将标头添加到 XML 到 CSV 的转换

问题描述

嗨,我正在尝试使用 xquery 将一些 xml 转换为 csv,并找到了帮助我达到这一点的上一篇文章:

for $b in /root/Result
return 
  concat(escape-html-uri(string-join(($b/HolidayEndDate,
                                      $b/HolidayType,
                                      $b/FirstName,                                                 
                                      $b/AllowanceRemainingDays,
                                      $b/HolidayStartDate,
                                      $b/EmployeeId,
                                      $b/AllowanceDays,
                                      $b/LastName,
                                      $b/HolidayDurationDays
                                      )
                                       /normalize-space(),
                                    ",")
                         ),
         codepoints-to-string(10))

这将根据需要返回所有数据,但没有标题行。上面的代码是否有一个简单的补充也可以返回标题行?谢谢。:)

标签: xquery

解决方案


由于您的查询返回一系列行,因此您可以在 FLWOR 表达式之前添加另一行:

"HolidayEndDate,HolidayType,FirstName,AllowanceRemainingDays,HolidayStartDate,EmployeeId,AllowanceDays,LastName,HolidayDurationDays
",

for $b in /root/Result
return 
  concat(escape-html-uri(string-join(($b/HolidayEndDate,
                                      $b/HolidayType,
                                      $b/FirstName,                                                 
                                      $b/AllowanceRemainingDays,
                                      $b/HolidayStartDate,
                                      $b/EmployeeId,
                                      $b/AllowanceDays,
                                      $b/LastName,
                                      $b/HolidayDurationDays
                                      )
                                       /normalize-space(),
                                    ",")
                         ),
         codepoints-to-string(10))

因为嵌套序列在 XQuery 中被展平(即连接),所以这会产生一个包含标题的输出序列。另请注意,我'
'为换行符使用了一个字符实体,它比codepoints-to-string(10).


推荐阅读