0

好的,所以我的 responseText 包含一个 '&' 字符,这似乎在解析时会导致问题。所以我想抓住我的 responseText 并将 ' ' 更改&为 ' &'

我知道 responseText 是一个字符串,理想情况下我想将它反馈到 responseXML 中,以使用带有 & 的新 xml 进行解析

非常感谢任何帮助

            responseXML  = xmlhttp.responseXML;
        var myResponseText = "<document-metadata><item><name>ccms_customer_key</name><value>0100000931012004110</value></item><item><name>ccms_customer_name</name><value>Mr Joe Bloggs</value></item><item><name>ccms_customer_salutation_name</name><value>Mr</value></item><item><name>ccms_rm_name</name><value></value></item><item><name>ccms_dms_key</name><value>2432559OEKM</value></item><item><name>ccms_customer_address</name><value>Main & Street Dublin </value></item></document-metadata>";
        /*
        if(myResponseText.indexOf('&') >= 0)    
        {
            var str = myResponseText.replace(/&/g,"&amp;");
            return str;
        }
        */
        //old line getSession().setAttribute('LH_METADATA_XML',xmlhttp.responseText);
        getSession().setAttribute('LH_METADATA_XML',myResponseText);

        // extract COMP_DMS_KEY from metadata
        var root = responseXML.getElementsByTagName('document-metadata').item(0);
4

1 回答 1

1

为什么不以完全不同的方式解析字符串,例如 with DOMParseror (可能是由于错误而需要的)document.implementation.createHTMLDocument(""),甚至只是创建一个HTMLDivElement和设置innerHTML

var doc = document.implementation.createHTMLDocument(""); // create a HTML document
doc.body.innerHTML = "<document-metadata><item><name>ccms_customer_key</name><value>0100000931012004110</value></item><item><name>ccms_customer_name</name><value>Mr Joe Bloggs</value></item><item><name>ccms_customer_salutation_name</name><value>Mr</value></item><item><name>ccms_rm_name</name><value></value></item><item><name>ccms_dms_key</name><value>2432559OEKM</value></item><item><name>ccms_customer_address</name><value>Main & Street Dublin </value></item></document-metadata>";
doc.body; // navigate to your root node from here

这样做(即使用text/html而不是application/xml)将意味着解析器不那么严格,并且不会被&DOM 方法的能力所困扰。

从这里您现在甚至可以重新序列化并将其转换为真正的 XML 文档,例如root您的根节点

var x = new XMLSerializer(), p = new DOMParser(), xml_string, xml_doc;
xml_string = x.serializeToString(root); // now we have a valid string
xml_doc = p.parseFromString(xml_string, 'application/xml'); // and now it is an XML document
于 2013-01-29T14:39:34.247 回答