好的,所以我的responseText包含'&'解析时似乎会导致问题的字符。所以我想获取我的responseText并更改“&
”的“&
”
我知道responseText是一个String,理想情况下我想把它反馈到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,"&");
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);
答案 0 :(得分:1)
为什么不以完全不同的方式解析字符串,例如DOMParser
或(由于错误可能是您需要的)document.implementation.createHTMLDocument("")
,或者甚至只是创建 HTMLDivElement < / em>并设置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