JS给XML添加子节点并写入数据!

JS给XML添加子节点并写入数据!,第1张

我看后发现有如下问题

1、javascript是一种脚本语言,是有一定安全限制的,不知道你打算通过xmlDoc.save("XmlData/about.xml")把about.xml文件保存到客户端还是服务器端,如果是服务器端那是不可能的,需要自己写activex控件

2、javascript只能 *** 作浏览器内存中的dom对象,另存为xml文件一般是没有意义的

3、如果把xml文件保存到客户端这么做也不好,一般的杀毒软件也许会报为病毒,如果保存到客户端,我以前的办法是用applet数字签名,然后再保存

XmlDocument dom = new XmlDocument()

XmlNode node = dom.CreateElement("message")

dom.Load(Server.MapPath("Xml/"+user.UserId.ToString()+".xml"))

if (dom.SelectSingleNode("/root/message") == null)

{

//说明不存在

dom.DocumentElement.AppendChild(node)

}

else

//存在(替换)

dom.DocumentElement.ReplaceChild(node, dom.SelectSingleNode("/root/message"))

$(function() {

//定义一个xml对象

var x = $("<xml><items><center /></items></xml>")

//在 center节点的结尾添加一个 bottom节点 ,然后在center节点的开头添加一个top节点

x.find("center").appendXml("<bottom />").prependXml("<top />")

//在 center节点的后面添加一个after节点,然后在center节点的前面添加一个before节点

x.find("center").afterXml("<after />").beforeXml("<before />")

alert(x.xml())

})

(function($) {

    function mnpXml(opCode, xmlStr) {

        return this.each(function() {

            if (typeof xmlStr != "string") return

            if (!jQuery.isXMLDoc(this)) return

            var node = $.parseXml(xmlStr).firstChild.cloneNode(true)

            switch (opCode) {

                case "append":

                    this.appendChild(node)

                    break

                case "prepend":

                    if (this.childNodes.length > 0)

                        this.insertBefore(node, this.firstChild)

                    else

                        this.appendChild(node)

                    break

                case "after":

                    if (this.nextSibling)

                        this.parentNode.insertBefore(node, this.nextSibling)

                    else

                        this.parentNode.appendChild(node)

                    break

                case "before":

                    this.parentNode.insertBefore(node, this)

                    break

            }

        })

    }

    $.fn.extend({

        appendXml: function(s) {

            return mnpXml.call(this, "append", s)

        },

        prependXml: function(s) {

            return mnpXml.call(this, "prepend", s)

        },

        afterXml: function(s) {

            return mnpXml.call(this, "after", s)

        },

        beforeXml: function(s) {

            return mnpXml.call(this, "before", s)

        },

        xml: function() {

            var elem = this[0]

            return elem.xml || (new XMLSerializer()).serializeToString(elem)

        },

        innerXml: function() {

            var s = this.xml()

            var i = s.indexOf(">"), j = s.lastIndexOf("<")

            if (j > i)

                return s.substring(i + 1, j)

            else

                return ""

        }

    })

    $.extend(jQuery, {

        parseXml: function(xmlStr) {

            if (window.ActiveXObject) {

                var xd = new ActiveXObject("Microsoft.XMLDOM")

                xd.async = false

                xd.loadXML(xmlStr)

                return xd

            }

            else if (typeof DOMParser != "undefined") {

                var xd = new DOMParser().parseFromString(xmlStr, "text/xml")

                return xd

            }

            else return null

        },

        toXml: function(obj, nodeName, useAttr) {

            var x = $($.parseXml("<" + nodeName + " />"))

            var n = x.find(":first")

            for (var p in obj) {

                if (useAttr)

                    n.attr(p, obj[p])

                else

                    n.appendXml("<" + p + " />").find(p).text(obj[p])

            }

            return x[0]

        }

    })

})(jQuery)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11462071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存