0

无论如何在 XML 文档中更改 XML 文档的内容类型?

我正在使用一个非常旧的系统来传回 HTML(我们正试图让它返回 XML)。我从 XMLHttpRequest 中检索它,并且我注意到使用 netcat 它没有传回任何内容类型的标头。

当我收到 XMLHttpRequest.responseXML 时,responseText 存在但 responseXML 为空。

我已经检查了返回的 XML 以查看它是否格式正确并且看起来是正确的(这是一个非常短的文档)。

4

3 回答 3

1

不,Content-Type正如您所指的那样(在您问题的评论中)是 HTTP 标头的一部分。

HTTP 只是(比如说)XML 文档的传输方式。它们是有效负载,它们对 HTTP 标头一无所知,因此无法更改它们。

您可能的意思是“<meta http-equiv="...在 XML 中是否有等价物。不,没有。即使 HTML 也无法更改 HTTP 标头,它只能使用户代理的行为有所不同。如果将 HTML 文件保存到磁盘,并且在加载时,用户代理没有可用的标头。

<?xml version="1.0" encoding="UTF-8"?>在 XML 中,所有必要的信息都在文件顶部的处理指令 ( ) 中。无需标题信息即可正确加载/显示它。

于 2008-12-19T18:19:17.763 回答
0

不。

当 UA 可以访问任何这样的标签时,它已经必须决定它正在解析什么样的文档。

于 2008-12-19T18:36:38.867 回答
0

我想通了,这是获取 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;
}

干杯!

于 2008-12-19T19:52:27.620 回答