我有xQuery代码解析XML响应并将其输出到csv文件。我正在解析的XML响应有时会在没有使用的情况下丢失节点。这导致csv输出出现问题,因为没有“,”返回单独的单元格,导致行数不同的行。下面的代码显示了我目前的情况:
concat("HolidayEndDate,HolidayType,FirstName,AllowanceRemainingDays,HolidayStartDate,EmployeeId,AllowanceDays,LastName,HolidayDurationDays ",
string-join(
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)), "")
有没有办法检查每个节点,如果它们为空或丢失,只需将其替换为“”或“,”。非常感谢,如果解释不清楚,请道歉。
谢谢。
用例如形成序列时
($b/HolidayEndDate,
$b/HolidayType,
$b/FirstName,
$b/AllowanceRemainingDays,
$b/HolidayStartDate,
$b/EmployeeId,
$b/AllowanceDays,
$b/LastName,
$b/HolidayDurationDays
)
任何不存在的$b/foo
都不会产生价值。你需要使用例如string($b/foo)
为所有那些表达式输出一个空字符串,用于那些不存在的foo
元素。
尝试
($b/HolidayType/text(),"")[1]
如果序列中有空值,则null就会消失。
('A', 'B', 'C', (), 'E')
成为('A', 'B', 'C', 'E')