XML 到 xQuery,用“”替换空节点或缺失节点
XML to xQuery, replace empty or missing node with " "
我有解析 XML 响应并将其输出到 csv 文件的 xQuery 代码。我正在解析的 XML 响应有时会丢失节点(如果未使用)。这导致 csv 输出出现问题,因为没有返回分隔单元格的“,”,导致行中有不同数量的 rows.The 下面的代码显示了我目前拥有的内容:
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/HolidayType/text(),"")[1]
如果序列中有空值,那么空值就会消失。
('A', 'B', 'C', (), 'E')
变为 ('A', 'B', 'C', 'E')
当您使用例如
形成一个序列时
($b/HolidayEndDate,
$b/HolidayType,
$b/FirstName,
$b/AllowanceRemainingDays,
$b/HolidayStartDate,
$b/EmployeeId,
$b/AllowanceDays,
$b/LastName,
$b/HolidayDurationDays
)
任何不存在的 $b/foo
都不会产生值。您需要使用例如string($b/foo)
对于所有这些表达式,为那些 foo
不存在的元素输出一个空字符串。
我有解析 XML 响应并将其输出到 csv 文件的 xQuery 代码。我正在解析的 XML 响应有时会丢失节点(如果未使用)。这导致 csv 输出出现问题,因为没有返回分隔单元格的“,”,导致行中有不同数量的 rows.The 下面的代码显示了我目前拥有的内容:
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/HolidayType/text(),"")[1]
如果序列中有空值,那么空值就会消失。
('A', 'B', 'C', (), 'E')
变为 ('A', 'B', 'C', 'E')
当您使用例如
形成一个序列时($b/HolidayEndDate,
$b/HolidayType,
$b/FirstName,
$b/AllowanceRemainingDays,
$b/HolidayStartDate,
$b/EmployeeId,
$b/AllowanceDays,
$b/LastName,
$b/HolidayDurationDays
)
任何不存在的 $b/foo
都不会产生值。您需要使用例如string($b/foo)
对于所有这些表达式,为那些 foo
不存在的元素输出一个空字符串。