Javascript DOMParser.parseFromString因XML5619失败:文档语法不正确

Javascript DOMParser.parseFromString因XML5619失败:文档语法不正确,javascript,Javascript,我有一个javascript函数,可以从网站获取xml文件: function getCCDfromHV() { var xmlhttp; if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");// code fo

我有一个javascript函数,可以从网站获取xml文件:

function getCCDfromHV() {
    var xmlhttp;
    if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
    else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");// code for IE6, IE5
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            var xml = xmlhttp.responseText;  
            document.getElementById("uploadResponse").innerHTML=xml;
            xmlDom = createXmlDOM(xml);
        }
    }
    xmlhttp.open("GET","../HVRawConnectorPHP/demo_app/GetCCDfromHV.php",true);   
    xmlhttp.send();
}
从转储到.innerHTML中可以看出,xml的检索是正常的。但是createXmlDOM的parseFromString失败,出现“XML5619:不正确的文档语法”,如下所示:

function createXmlDOM(xml) {
    console.log('createXmlDOM: the first 255 chars=' +xml.substring(0,255));
    if (window.DOMParser){
        var parser=new DOMParser();
        xmlDom=parser.parseFromString(xml,"text/xml");    //fails with XML5619: Incorrect document syntax.
    }
    else { // Internet Explorer
        xmlDom=new ActiveXObject("Microsoft.XMLDOM");
        xmlDom.async=false;
        xmlDom.loadXML(xml);
    }
    return xmlDom;
}
但是,如果我复制.innerHTML文本并将其粘贴到编辑器中,并将其保存为文本文件,使用FileReader加载该文件,然后将该文本发送到createXmlDOM,则效果良好


因此,不知何故,剪切和粘贴或文件写入和读取的行为会进行某种翻译,从而使parseFromString可以接受。有没有一种不用保存和重新加载文件的方法?第一个字符是“&”,因为第一个字符实际上是“我终于找到了答案。xml需要进行html解码。我添加了以下功能:

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
我在这里发现: