我有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)), "")
有没有一种方法可以检查每个节点,如果它们为空或丢失,只需将其替换为“”或“,”即可。非常感谢,如果解释不清楚,我们深表歉意。
谢谢。
答案 0 :(得分:0)
尝试
($b/HolidayType/text(),"")[1]
如果序列中包含null,则null就会消失。
('A', 'B', 'C', (), 'E')
变为('A', 'B', 'C', 'E')
答案 1 :(得分:0)
当您与例如形成序列时
($b/HolidayEndDate,
$b/HolidayType,
$b/FirstName,
$b/AllowanceRemainingDays,
$b/HolidayStartDate,
$b/EmployeeId,
$b/AllowanceDays,
$b/LastName,
$b/HolidayDurationDays
)
任何不存在的$b/foo
都不会产生值。您将需要使用例如string($b/foo)
用于所有这些表达式,以为不存在的foo
元素输出一个空字符串。