我在SQL Server 2016中编写了一个生成XML文件的存储过程
创建XML文件时,我需要明确指定编码。这就是为什么我在XML内容的结果中添加了显式编码。
function setup() {
var myImage = document.getElementsByClassName("image");
document.getElementsByClassName("remove")[0].
addEventListener("click", function(){
myImage[0].parentNode.removeChild(myImage[0]);});
}
// Example case.
document.body.innerHTML = `
<div class="image">
<img src="firstimage.jpg" alt="First">
<button class="remove">X</button>
</div>
<div class="image">
<img src="secondimage.jpg" alt="Second">
<button class="remove">X</button>
</div>`;
setup();
document.getElementsByClassName("remove")[0].click();
console.log(document.body.innerHTML);
问题在于,当传递给变量时,编码所需的双引号会被忽略。这就是为什么当我在浏览器中打开生成的XML文件时,它看起来完全是空白的。但是当我打开文本时编辑器一切都正确显示,除了1.0和UTF-8之间没有双引号(例如SELECT @SQLStr =
'SELECT N''<?xml version="1.0" encoding="UTF-8"?>''
+ (SELECT CAST((SELECT [Id], [FirstName], [LastName], [Address]
FROM InputTemp.dbo.XMLTest AS Body
WHERE Id = ''' + str(@Id) + '''
FOR XML AUTO, ELEMENTS) AS NVARCHAR(MAX)
)
)'
)。一旦我添加双引号,我就可以正确地在浏览器中看到XML文件内容。
<?xml version=1.0 encoding=UTF-8?>
此选项没有帮助。
但是,当我单独运行此语句时,会出现双引号。
SET QUOTED_IDENTIFIER ON
答案 0 :(得分:0)
这个答案是替代&#34;到&#39;&#39;&#39;。虽然它只打印单引号。对于浏览器来说,使用&#34;打开XML文件就足够了。双引号。
请注意,数据库兼容级别必须是2016年。
SELECT @SQLStr =
'SELECT N''<?xml version=''''1.0'''' encoding=''''UTF-8''''?>'' + (SELECT CAST((SELECT [Id], [FirstName], [LastName], [Address] FROM InputTemp.dbo.XMLTest AS Body WHERE Id = ''' + str(@Id) + ''' FOR XML AUTO, ELEMENTS) AS NVARCHAR(MAX)))'