使用Jquery添加XML元素

时间:2012-08-23 06:13:59

标签: javascript jquery xml xml-parsing

我一直在努力将XML元素添加到XML结构中而没有成功,这是我的代码。

var parseXml;
        if (window.DOMParser) {
            parseXml = function(xmlStr) {
            return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
            };
        }
        else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) {
            parseXml = function(xmlStr) {
                var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = "false";
                xmlDoc.loadXML(xmlStr);
                return xmlDoc;
            };
        }
        else {
            parseXml = function() { return null; }
        }
        var xmlTree = parseXml("<root></root>");

        function add_children(child_name,parent_name)
        {
            str = '<'+child_name+'></'+child_name+'>';
            //strXML = parseXml(str);
            $(xmlTree).find(parent_name).append(str);
            var xmlString = (new XMLSerializer()).serializeToString(xmlTree);
            console.log(xmlString);
        }
        add_children("apple","root");
        add_children("orange","root");
        add_children("lychee","root");

但是控制台三次显示<root/>

1 个答案:

答案 0 :(得分:0)

问题在于您是在Html document中创建节点,而不是在XML中创建节点,因此您无法附加它。改变这一行:

str = '<'+child_name+'></'+child_name+'>';

对于这个:

str = xmlTree.createElement(child_name);

请参阅http://jsfiddle.net/W9Wpb/

中的工作代码