复制代码 代码如下:
functionXMLWriter()
{
this.XML=[];
this.Nodes=[];
this.State="";
this.FormatXML=function(Str)
{
if(Str)
returnStr.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();
}
elseif(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(){returnthis.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”,“SomeValue”);
WriteString方法:
XML.Node(“MyNode”,“MyValue”);
//Produces:<MyNode>MyValue</MyNode>
XML.BeginNode(“Foo”);
XML.WriteString(“HelloWorld”);
XML.EndNode();
//Produces<Foo>HelloWorld</Foo>
Node方法:
XML.EndNode();
//Produces:<FooBar=”SomeValue”/>
eg:
复制代码 代码如下:
functionWriteTest()
{
try
{
varXML=newXMLWriter();
XML.BeginNode("Example");
XML.Attrib("SomeAttribute","AndSomeValue");
XML.Attrib("AnotherAttrib","...");
XML.WriteString("ThisisanexampleoftheJSXMLWriteStringmethod.");
XML.Node("Name","Value");
XML.BeginNode("SubNode");
XML.BeginNode("SubNode2");
XML.EndNode();
XML.BeginNode("SubNode3");
XML.WriteString("Blahblah.");
XML.EndNode();
XML.Close();//Takescareofunendedtags.
//ThereplaceinthefollowinglineareonlyformakingtheXMLlookprettierinthetextarea.
document.getElementById("ExampleOutput").value=XML.ToString().replace(/</g,"n<");
}
catch(Err)
{
alert("Error:"+Err.description);
}
returnfalse;
}
生成的xml为:
<ExampleSomeAttribute="AndSomeValue"AnotherAttrib="...">ThisisanexampleoftheJSXMLWriteStringmethod.
<Name>Value
</Name>
<SubNode>
<SubNode2/>
<SubNode3>Blahblah.
</SubNode3>
</SubNode>
</Example>
【JavaScript生成xml】相关文章: