JavaScript生成xml

时间:2021-05-26

复制代码 代码如下:
functionXMLWriter()
{
this.XML=[];
this.Nodes=[];
this.State="";
this.FormatXML=function(Str)
{
if(Str)
returnStr.replace(/&/g,"&amp;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
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>

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章