由于命名空间的原因,简单的 XQuery 不工作
Simple XQuery Not Working Due to Namespace
我有一个 xml 文档:
<ns0:Employee xmlns:ns0="http://namespace">
<EmployeeID></EmployeeID>
<Department></Department>
<FirstName> </FirstName>
<MiddleInitial />
<LastName></LastName>
<IsActive></IsActive>
<CreateDate>2017-07-25T14:18:14.513</CreateDate>
<UpdateDate>2018-01-25T16:58:52.733</UpdateDate>
<PrimaryRole></PrimaryRole>
<TempPassword></TempPassword>
<License></License>
<AccessLevelID></AccessLevelID>
<CompanyID></CompanyID>
<Schedule></Schedule>
</ns0:Employee>
并试图从中获取 CreateDate 和 UpdateDates。我尝试了以下方法:
select
[xmlcolumn].value('(/Employee/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
但是尽管有一个 CreateDate,它总是返回一个空值。如果我从 xml 文档中删除名称空间,我的查询 returns CreateDate。
您的查询不包含命名空间。您可以这样做以包含命名空间:
select
[xmlcolumn].value('declare namespace ns0="http://namespace";(/ns0:Employee/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
或者只使用这个
select
[xmlcolumn].value('(/*/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
我有一个 xml 文档:
<ns0:Employee xmlns:ns0="http://namespace">
<EmployeeID></EmployeeID>
<Department></Department>
<FirstName> </FirstName>
<MiddleInitial />
<LastName></LastName>
<IsActive></IsActive>
<CreateDate>2017-07-25T14:18:14.513</CreateDate>
<UpdateDate>2018-01-25T16:58:52.733</UpdateDate>
<PrimaryRole></PrimaryRole>
<TempPassword></TempPassword>
<License></License>
<AccessLevelID></AccessLevelID>
<CompanyID></CompanyID>
<Schedule></Schedule>
</ns0:Employee>
并试图从中获取 CreateDate 和 UpdateDates。我尝试了以下方法:
select
[xmlcolumn].value('(/Employee/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
但是尽管有一个 CreateDate,它总是返回一个空值。如果我从 xml 文档中删除名称空间,我的查询 returns CreateDate。
您的查询不包含命名空间。您可以这样做以包含命名空间:
select
[xmlcolumn].value('declare namespace ns0="http://namespace";(/ns0:Employee/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table
或者只使用这个
select
[xmlcolumn].value('(/*/CreateDate)[1]', 'varchar(max)') as CreateDate
from
table