4

我正在尝试使用 Sql Server 中的 XPath 选择以下 xml 文档的 Lookup.Result 元素的文本节点。

<Commands>
<Command id="1">
<Lookup.Result>Result.OK</Lookup.Result>
</Command>
</Commands>

我尝试以下查询:

declare @xml xml
set @xml = '<Commands>
    <Command id="1">
    <Lookup.Result>Result.OK</Lookup.Result>
    </Command>
    </Commands>
'
select t.c.value('./Lookup&#46;Result/text()[1]', 'varchar(20)')
from @xml.nodes('/Commands/Command') t(c)

但我收到以下错误:XQuery [value()]: Syntax error near 'Lookup'

我怎么能逃脱。(在 Lookup.Result 元素标记名称中的点)在 XPath 表达式中?请帮助找到一个优雅的解决方案来解决这个问题。提前感谢您的宝贵时间。

4

2 回答 2

3
    declare @xml xml 
    set @xml = '<Commands>
    <Command id="1">
    <Lookup.Result>Result.OK</Lookup.Result>
    </Command>
    </Commands> ' 

    select t.c.value('(./Lookup.Result/text())[1]', 'varchar(20)') 
    from @xml.nodes('/Commands/Command') t(c)

你错过了

()

围绕上面的 xpath,MSSQL 处理 . 在我的机器上很好

于 2013-04-05T12:51:03.197 回答
0

那么只有 5 个转义字符:

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

所以你需要一个函数来预处理然后和另一个后处理。即在 udf 中包装 5 个嵌套的 REPLACE 语句...

于 2013-04-05T12:39:05.590 回答