我应该如何测试对象是否是XML文档(以跨浏览器的方式)

hug*_*omg 6 javascript xml

对于单元测试,我希望能够检查某个返回的对象是否是XML文档.这样做的最佳方法是什么?

我目前正在测试doc.implementation(第一个想到的DOM属性)但是有更好的方法吗?另外,有没有一种很好的方法来区分HTML文档中的XML文档?

Ron*_*ton 1

function isXML(xmlStr){
  var parseXml;

  if (typeof window.DOMParser != "undefined") {
    parseXml = function(xmlStr) {
      return (new window.DOMParser()).parseFromString(xmlStr, "text/xml");
    };
  } else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) {
    parseXml = function(xmlStr) {
      var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async = "false";
      xmlDoc.loadXML(xmlStr);
      return xmlDoc;
    };
  } else {
    return false;
  }

  try {
    parseXml(xmlStr);
  } catch (e) {
    return false;
  }
  return true;      
}
Run Code Online (Sandbox Code Playgroud)