<q value='&lt;'/> 或者 <q>&lt;</q>都无法解析,大于号没问题。

解决方案 »

  1.   

    你先给讲下jsdom,然后就有为回答你的问题了。
      

  2.   

    感谢楼上提醒.现贴上示例代码.浏览器为IE.<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    <script>
    var JsUtil = new Object();
    JsUtil.parseXml = function(s) {
    var XmlDom = function() {
    if(window.ActiveXObject) {
    var arrSignatures = ["Msxml2.DOMDocument.6.0","MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
     "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument","Microsoft.XmlDom"];
    for (var i=0; i < arrSignatures.length; i++) {
    try {
    var oXmlDom = new ActiveXObject(arrSignatures[i]);
    return oXmlDom;
    } catch (oError) {
    //ignore
    }
    }
    throw new Error("MSXML is not installed on your system."); 
    }else{
    return null; //do more
    }
    };
    var obj = new XmlDom();
    obj.async = false;
    obj.loadXML(s);
    obj.onreadystatechange = function() {
    if(obj.readyState == 4) {
    return obj;
    }
    }
    return obj;
    }function initReportForm() {
    // parse xml
    var xml = document.ReportForm.xml.value;
    var doc = JsUtil.parseXml(xml).documentElement;
    alert(JsUtil.parseXml(xml).xml);
    alert(doc);
    }
    </script>
    </head><body>
    <button onClick="initReportForm()">test</button>
    <form name="ReportForm" method="post" action="report.do" target="_blank">
    <input type="hidden" name="xml" value="<q value='>'></q>"/>
    </form>
    </body>
    </html>
      

  3.   

    问题已经找到了.当写成<input type="hidden" name="xml" value="<q value='&lt;'/>"/>用document.ReportForm.xml.value取值时,&lt;符号已经被转成了<号了,这时已经不符合xml格式标准.直接将字符串"<q value='&lt;'/>"传递给js变量就不会出错了.