我正在尝试使用 Qt XML 创建一个包含 Javascript 的 HTML 文档。这是我的 Qt 代码的相关部分:
QDomDocument document;
//Create head, body, etc
QDomElement script = document.createElement("script");
script.setAttribute("type", "text/javascript");
body.appendChild(script); //body is the QDomElement representing the <body> tag
QDomText scriptText = document.createTextNode("if(x < 0){\n/*do something*/\n}");
script.appendChild(scriptText);
QFile file("C:\\foo.html");
file.open(QIODevice::WriteOnly);
QTextStream stream(&file);
stream << document.toString();
问题是在 Javascript 代码中,它转义了<
用 替换它的字符<
,给出了以下不是有效的 Javascript 的输出:
<script type="text/javascript">
if(x < 0){
/*do something*/
}
</script>
我在 Qt 文档中搜索了解决方案,但没有找到任何解决方案。
一种解决方法可能是在写入文件时通过执行<
替换为,但也可能出现我想不理会的 Javascript 代码之外的情况。<
stream << document.toString().replace("<", "<")
<
我还可以想到一些 Javascript 技巧来检查数字是否为负而不使用任何特殊的 HTML 字符,例如if(String(x).indexOf('-') != -1)
,但我想知道是否有更好的方法。
我的问题是如何创建一个QDomText
包含特殊 HTML 字符(如<
、>
、&
等)的文本的对象,而不会将它们转义QDomDocument::toString()
?