0

我想使用 SQL Server 的 XML.modify 对 XML 文档进行修改。我的问题是我的 XML 文档使用了一些转义的 XML,因此“<”显示为“<”,而“>”显示为“>”。我想知道是否可以设置被转义 XML 包围的元素的值。我正在处理的一个例子如下:

Declare @myDoc as xml;
Set @myDoc = '<Root>       
                <ProductDescription ProductID="1" ProductName="Road Bike">       
                    <Features>
                        <BikeLight>False</BikeLight>
                        &lt;BikeHorn&gt;True&lt;/BikeHorn&gt;    
                    </Features>       
                </ProductDescription>       
            </Root>'  ;

我知道我可以通过使用编辑 BikeLight 元素的值

set @myDoc.modify('replace value of (/Root/ProductDescription/Features/BikeLight/text())[1] with "True"')

但尝试对 BikeHorn 执行相同操作只会返回未修改的 XML 文档。是否可以修改转义 XML 包围的元素的值?任何帮助将不胜感激,谢谢。另外,请注意,在我的实际代码中,Features 下的所有元素都将被转义的 XML 包围。

4

1 回答 1

0

问题是你没有一个名为 的节点<BikeHorn>,你有一个复杂的节点<Features>,除了一个<BikeLight>子节点之外,它还包含一些它自己的文本。因此,您需要修改<Features>以更改 的值BikeHorn

set @myDoc.modify('
replace value of (/Root/ProductDescription/Features/text())[1]
with "&lt;BikeHorn&gt;False&lt;/BikeHorn&gt;"')
于 2015-02-10T19:20:44.570 回答