我有一些不同结构的xmls,我想从中获取所有值,包括空值。过了一段时间,我得写了这个小样本代码:
declare @xml xml = '
<e xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Code>code1</Code>
<DepartmentCode xsi:nil="true" />
<Email>email1</Email>
<AddressId xsi:nil="true" />
<IsActive>1</IsActive>
</e>
<e xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Code>code2</Code>
<DepartmentCode xsi:nil="true" />
<Email>email2</Email>
<AddressId xsi:nil="true" />
<IsActive>0</IsActive>
</e>'
;with sub as
(
SELECT Tbl.Col.value('.', 'nvarchar(max)') as Value
FROM @xml.nodes('e//text()') Tbl(Col)
)
select * from sub s
但它不包括空值。如何更改代码以获取结果中的空值?
答案 0 :(得分:3)
你没有得到它们,因为你是从//text()
尝试从
中选择SELECT Tbl.Col.value('.', 'nvarchar(max)') as Value
FROM @xml.nodes('e//*') Tbl(Col)