首页 > 解决方案 > XML 到 xQuery,用“”替换空节点或缺失节点

问题描述

我有解析 XML 响应并将其输出到 csv 文件的 xQuery 代码。如果不使用,我正在解析的 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)), "")

有没有办法检查每个节点,如果它们为空或丢失,只需用“”或“,”替换它。非常感谢,如果解释不清楚,请道歉。

谢谢。

标签: xmlxqueryinformatica

解决方案


尝试

($b/HolidayType/text(),"")[1]

如果序列中有一个空值,那么空值就会消失。

('A', 'B', 'C', (), 'E')变成('A', 'B', 'C', 'E')


推荐阅读