【发布时间】:2011-08-05 20:26:37
【问题描述】:
我有一个类似的 XML:
<?xml version="1.0" encoding="utf-16"?>
<ExportProjectDetailsMessage xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Project">
<CPProjectId>7665699f-6772-424c-8b7b-405b9220a8e7</CPProjectId>
</ExportProjectDetailsMessage>
我正在尝试使用以下方法将 CPProjectId 作为唯一标识符:
DECLARE @myDoc xml
DECLARE @ProdID varchar(max)
SET @myDoc = '<ExportProjectDetailsMessage xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Project"><CPProjectId>7665699f-6772-424c-8b7b-405b9220a8e7</CPProjectId></ExportProjectDetailsMessage>'
SET @ProdID = @myDoc.value('(ExportProjectDetailsMessage/CPProjectId)[1]', 'varchar(max)' )
SELECT @ProdID
我只能收到 NULL =/ 我在 @myDoc.value 上尝试了很多组合,但没有结果 =/
如何从我的 XML 中检索值?
谢谢!
--编辑: 我注意到,当我从 XML 中删除命名空间声明时,它工作正常! 问题是我需要这个命名空间! =/
【问题讨论】:
-
参见:stackoverflow.com/questions/4081906/… 技巧是“WITH NAMESPACES”,然后使用“ns:”形式。
标签: sql sql-server xml tsql