Как сериализовать HTML DOM в XML в IE 8? - PullRequest
0 голосов
/ 18 июля 2011

Есть ли способ сделать это (сериализация HTML DOM в XML) в IE 8 или любой другой более старой версии IE.
В Firefox:

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

делает это.
Я еще не пробовал.

XMLSerializer вызывает ошибку в IE 8, что она не определена.

1 Ответ

0 голосов
/ 28 июля 2011
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 (); * +1004 *

Я написал этот JS, я запускаю этот JavaScript, используя GreaseMonkey4IE. Это просто помещает кнопку на каждой странице домена, который вы указываете в GM4IE. При нажатии этой кнопки он будет анализировать HTML-документ и создавать XML-файл. Он также сначала отобразит то же, что и предупреждение, и сохранит XML на локальном диске по указанному пути.
Есть еще много улучшений, которые я планирую сделать, но да, это работает и может дать вам, ребята, идею.
Я надеюсь, что программа не требует пояснений.
пожалуйста, посмотрите здесь Как получить события, связанные с элементами DOM?


Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...