无论如何在 XML 文档中更改 XML 文档的内容类型?
我正在使用一个非常旧的系统来传回 HTML(我们正试图让它返回 XML)。我从 XMLHttpRequest 中检索它,并且我注意到使用 netcat 它没有传回任何内容类型的标头。
当我收到 XMLHttpRequest.responseXML 时,responseText 存在但 responseXML 为空。
我已经检查了返回的 XML 以查看它是否格式正确并且看起来是正确的(这是一个非常短的文档)。
无论如何在 XML 文档中更改 XML 文档的内容类型?
我正在使用一个非常旧的系统来传回 HTML(我们正试图让它返回 XML)。我从 XMLHttpRequest 中检索它,并且我注意到使用 netcat 它没有传回任何内容类型的标头。
当我收到 XMLHttpRequest.responseXML 时,responseText 存在但 responseXML 为空。
我已经检查了返回的 XML 以查看它是否格式正确并且看起来是正确的(这是一个非常短的文档)。
不,Content-Type
正如您所指的那样(在您问题的评论中)是 HTTP 标头的一部分。
HTTP 只是(比如说)XML 文档的传输方式。它们是有效负载,它们对 HTTP 标头一无所知,因此无法更改它们。
您可能的意思是“<meta http-equiv="...
在 XML 中是否有等价物。不,没有。即使 HTML 也无法更改 HTTP 标头,它只能使用户代理的行为有所不同。如果将 HTML 文件保存到磁盘,并且在加载时,用户代理没有可用的标头。
<?xml version="1.0" encoding="UTF-8"?>
在 XML 中,所有必要的信息都在文件顶部的处理指令 ( ) 中。无需标题信息即可正确加载/显示它。
不。
当 UA 可以访问任何这样的标签时,它已经必须决定它正在解析什么样的文档。
我想通了,这是获取 xhr.responseText 字符串并从中创建 XML 文档的问题:
function createDOMFromString(sXml){
var browser = navigator.appName;
var oXmlDom = null;
// IE Implementation...
if(browser == "Microsoft Internet Explorer") {
oXmlDom=new ActiveXObject("Microsoft.XMLDOM");
oXmlDom.async="false";
oXmlDom.loadXML(sXml);
}
// FF Implementation...
else {
var oParser = new DOMParser();
oXmlDom = oParser.parseFromString(sXml, "text/xml");
}
// TODO: If we need it Safari implementation.
return oXmlDom;
}
干杯!