0

Microsoft SQL Server 2008 では.query('{xpath}/text()')、XML ストリーム列の値に対して実行するときに、XPath で選択されたノードの値に " " が含まれている場合&、戻り値は " &amp" ではなく " &" になります。

これはバグですか、それとも何か間違っていますか? むしろ、XPath クエリの text() がそれを行うことになっていない場合、SQLXML XPath を使用して、エンコードされていないテキスト、つまり .innerText (W3C XML DOM ごと) に相当するものを取得するにはどうすればよいでしょうか?

4

1 に答える 1

4

バグはありません。SQL XML は XML エスケープ シーケンスを正しくデコードします。

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.value(N'(node)[1]', N'varchar(max)');

最も可能性の高い問題は、XMLクエリメソッドの誤解です。XMLフラグメントを返すため、XML であるため、すべてのコンテンツがエスケープされます。

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.query(N'/node/text()');
于 2010-03-04T21:55:34.443 に答える