js生成xml

来源:互联网 发布:东南亚旅游 知乎 编辑:程序博客网 时间:2024/05/20 20:21
function XMLWriter(){    this.XML=[];    this.Nodes=[];    this.State="";    this.FormatXML = function(Str)    {        if (Str)            return Str.replace(/&/g, "&").replace(/\"/g, """).replace(/</g, "<").replace(/>/g, ">");        return ""    }    this.BeginNode = function(Name)    {        if (!Name) return;        if (this.State=="beg") this.XML.push(">");        this.State="beg";        this.Nodes.push(Name);        this.XML.push("<"+Name);    }    this.EndNode = function()    {        if (this.State=="beg")        {            this.XML.push("/>");            this.Nodes.pop();        }        else if (this.Nodes.length>0)            this.XML.push("</"+this.Nodes.pop()+">");        this.State="";    }    this.Attrib = function(Name, Value)    {        if (this.State!="beg" || !Name) return;        this.XML.push(" "+Name+"=\""+this.FormatXML(Value)+"\"");    }    this.WriteString = function(Value)    {        if (this.State=="beg") this.XML.push(">");        this.XML.push(this.FormatXML(Value));        this.State="";    }    this.Node = function(Name, Value)    {        if (!Name) return;        if (this.State=="beg") this.XML.push(">");        this.XML.push((Value=="" || !Value)?"<"+Name+"/>":"<"+Name+">"+this.FormatXML(Value)+"</"+Name+">");        this.State="";    }    this.Close = function()    {        while (this.Nodes.length>0)            this.EndNode();        this.State="closed";    }    this.ToString = function(){return this.XML.join("");}}

XMLWriter
有以下几个方法:

BeginNode (Name)

EndNode ()

Attrib (Name, Value)

WriteString (Value)

Node (Name, Value)

Close ()

ToString ()

BeginNode
输出一个标签:

XML.BeginNode(“Foo”);

XML.BeginNode(“Foo”);
XML.Attrib(“Bar”, “Some Value”);

WriteString 方法:

XML.Node(“MyNode”, “My Value”);
//Produces: <MyNode>My Value</MyNode>

XML.BeginNode(“Foo”);
XML.WriteString(“Hello World”);
XML.EndNode();
//Produces <Foo>Hello World</Foo>

Node 方法:
XML.EndNode();
//Produces: <Foo Bar=”Some Value” />

 

function WriteTest()        {            try            {                var XML=new XMLWriter();                XML.BeginNode("Example");                XML.Attrib("SomeAttribute", "And Some Value");                XML.Attrib("AnotherAttrib", "...");                XML.WriteString("This is an example of the JS XML WriteString method.");                XML.Node("Name", "Value");                XML.BeginNode("SubNode");                XML.BeginNode("SubNode2");                XML.EndNode();                XML.BeginNode("SubNode3");                XML.WriteString("Blah blah.");                XML.EndNode();                XML.Close(); // Takes care of unended tags.                // The replace in the following line are only for making the XML look prettier in the textarea.                document.getElementById("ExampleOutput").value=XML.ToString().replace(/</g,"\n<");            }            catch(Err)            {                alert("Error: " + Err.description);            }            return false;        }


生成的xml为:

<Example SomeAttribute="And Some Value" AnotherAttrib="...">This is an example of the JS XML WriteString method.<Name>Value</Name><SubNode><SubNode2/><SubNode3>Blah blah.</SubNode3></SubNode></Example>


 

创建xml:

if(!document.all) XMLDocument.prototype.__defineGetter__("xml",function(){return new XMLSerializer().serializeToString(this)}) function createXml(str){ if(document.all){ var xmlDom=new ActiveXObject("Microsoft.XMLDOM") xmlDom.loadXML(str) return xmlDom } else return new DOMParser().parseFromString(str, "text/xml") } xml=createXml(document.getElementById("x1").innerHTML) alert(xml.xml) 


 

原创粉丝点击