【问题标题】:How to serialize HTML DOM to XML in IE 8?如何在 IE 8 中将 HTML DOM 序列化为 XML?
【发布时间】:2011-10-07 12:56:52
【问题描述】:

有没有办法在 IE 8 或任何其他旧版本的 IE 中做到这一点(将 HTML DOM 序列化为 XML)。
在火狐中:

var xmlString = new XMLSerializer().serializeToString( doc );

可以。
不过我没试过。

XMLSerializer 在 IE 8 中导致错误,即未定义。

【问题讨论】:

  • @kaylan 也许他不知道这个功能,应该给他一个链接来解释设置问题答案的正确方法?
  • @CS,它不需要任何链接。因为,任何人只要看到答案下方的 TICK 标记就知道是用来接受它的。我的名字是 kalyan 不是 kaylan。请在评论前查看名称。
  • @kalyan 通过用纯文本解释如何回答问题,您提供的帮助超出了我的想象。现在希望这个用户现在已经学会了如何做到这一点,并且标记您的问题的答案非常重要。如果答案是答案,则单击勾选按钮。如果您从不标记答案,您将来可能不会收到答案。所以他应该回答他所有的问题并勾选帮助他解决问题的答案。
  • @kalyan 如果我得到一个可以接受的答案,我一定会接受。

标签: html dom


【解决方案1】:
var objSerializeDOM = {

//Variable to hold generated XML.   
msg : "",   

serializeDOM : function() {

    dv = document.createElement('div'); // create dynamically div tag
    dv.setAttribute('id', "lyr1"); // give id to it
    dv.className = "top"; // set the style classname
    // set the inner styling of the div tag
    dv.style.position = "absolute";

    // set the html content inside the div tag
    dv.innerHTML = "<input type='button' value='Serialize' onClick='objSerializeDOM.createXML()'/>"
    "<br>";

    // finally add the div id to ur form
    document.body.insertBefore(dv, document.body.firstChild);

},

/**
 * XML creation takes place here.
 */
createXML : function() {

    objSerializeDOM.msg += "";
    objSerializeDOM.msg += "<?xml version='1.0' encoding='UTF-8'?>\n\n";
    // Get all the forms in a document.
    var forms = document.forms;

    for ( var i = 0; i < forms.length; i++) {
        // Get all the elements on per form basis.
        elements = document.forms[i].elements;
        objSerializeDOM.msg += "<FORM name=\"" + forms[i].name + "\" method=\""
                + forms[i].method + "\" action=\"" + forms[i].action + "\">\n\n";
        for ( var j = 0; j < elements.length; j++) {
            objSerializeDOM.msg += "    <" + elements[j].tagName + "  type=\""
                    + elements[j].type + "\"" + "  name=\""
                    + elements[j].name + "\"" + "   Value =\""
                    + elements[j].value + "\"  />\n";
        }
        alert(document.forms[i].elements[1].event);
    }
    objSerializeDOM.msg += "\n\n</FORM>\n\n";
    alert(objSerializeDOM.msg);
    objSerializeDOM.writeToFile(objSerializeDOM.msg);
},

/**
 * Writes the msg to file at pre-specified location.
 * @param msg
 *          the XML file created.
 */
writeToFile : function(msg) {
   var fso  = new ActiveXObject("Scripting.FileSystemObject");
   var fh = fso.CreateTextFile("c:\\myXML.xml", true);
   fh.WriteLine(msg);
   fh.Close();
}

};

objSerializeDOM.serializeDOM();

我编写了这个 JS,我使用 GreaseMonkey4IE 运行了这个 javascript。这只是在您在 GM4IE 中指定的域的每个页面上放置一个按钮。单击该按钮后,它将解析 HTML 文档并创建一个 XML 文件。它还将首先显示与警报相同的内容,并将 XML 保存在指定路径的本地驱动器中。
我还计划进行许多改进,但是它确实有效,并且可能会给你们一个想法。
我希望该程序是不言自明的。
请看这里How to get Events associated with DOM elements?


谢谢

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 2011-07-24
    • 2010-10-31
    • 2016-08-29
    • 2013-12-13
    • 2013-06-17
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多