XML到xQuery,用“”替换空或缺少的节点

问题描述 投票:0回答:2

我有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)), "")

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

谢谢。

xml xquery informatica
2个回答
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元素。


0
投票

尝试

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

如果序列中有空值,则null就会消失。

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

© www.soinside.com 2019 - 2024. All rights reserved.