JavaScript生成xml

    技术2022-05-11  57

    JavaScript生成xml

    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” />

     

    eg:

    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> 

     

    最新回复(0)