解析responseText或更改responseXML中的responseText

时间:2013-01-29 14:24:46

标签: javascript xml

好的,所以我的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,"&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);

1 个答案:

答案 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