淘先锋技术网

首页 1 2 3 4 5 6 7

        前几天一老鸟跑来说:“小Q,看来这几天你没有什么事情,来给你安排一下工作!”我曰:“哦”,emcrook.gif~~~。从此就开始饿补.net中操作XML的东东。好了,废话不说,做先!

下面是的代码是XML的模板TestTemplate.vxml

 1 None.gif <? xml version ="1.0" encoding ="utf-8"  ?>
 2 None.gif < vxml  xmls ="http://www.w3.org/2001/vxml" >
 3 None.gif   < form >
 4 None.gif     < var  name ="val" />
 5 None.gif     < assign  name ="val"  expr ="8" />
 6 None.gif     < block >
 7 None.gif       < if  cond ="val &lt; 9" >
 8 None.gif         < prompt > 此值小于9 </ prompt >
 9 None.gif       </ if >
10 None.gif       < if  cond ="val &gt; 2" >
11 None.gif         < prompt > 此值大于2 </ prompt >
12 None.gif       </ if >
13 None.gif     </ block >
14 None.gif   </ form >
15 None.gif </ vxml >

       在这个模板中保存的是VoiceXML文件,这是用来制定语音流程的东东,通过它您就能够实现类似10086或118114的语音台的功能。(VoiceXML小弟正在学习,以后会写些相关的随笔。)

        下面的这行代码就是Vxml.aspx中的内容。注意:必须要将除下面这行代码之外的所有内容删除,只有这样才能以流的方式输出来。

1 None.gif <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeFile = " Vxml.aspx.cs "  Inherits = " Vxml_Vxml "   %>

        汗颜,就为了前面的这行代码我整整浪费了一个下午,郁闷!

        下面的这行代码就是我今天的成果,它的名字就叫“Vxml.aspx.cs”!哈哈~~“呆,骂规骂,别打呀!~~~救命呀!-----咚”。(从桌子下爬了起来, 14.gif)。在这里必须要应用两个库,就是System.IO;和System.Xml。具体的执行过程是:先读取TestTemplate.vxml;然后,替换模板中相关节点属性的值“val”为“老鼠”;再后,在form节点的最后部分加入 < 老鼠 zizi =" …… "> …… </ 老鼠 >;最后,在本页输出结果。

 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Configuration;
 4 None.gif using  System.Collections;
 5 None.gif using  System.Web;
 6 None.gif using  System.Web.Security;
 7 None.gif using  System.Web.UI;
 8 None.gif using  System.Web.UI.WebControls;
 9 None.gif using  System.Web.UI.WebControls.WebParts;
10 None.gif using  System.Web.UI.HtmlControls;
11 None.gif using  System.IO;
12 None.gif using  System.Xml;
13 None.gif public  partial  class  Vxml_Vxml : System.Web.UI.Page
14 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
15InBlock.gif    protected void Page_Load(object sender, EventArgs e)
16ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
17InBlock.gif        Response.Clear();
18InBlock.gif        string path = Server.MapPath("TestTemplate.vxml");
19InBlock.gif        //DOM方式读取
20InBlock.gif        XmlDocument doc = new XmlDocument();//建立XML文件对象
21InBlock.gif        doc.Load(path);//读取xml文件
22InBlock.gif        XmlElement objElement = doc.DocumentElement;//获取XML文件的根元素
23InBlock.gif        foreach (XmlNode test in objElement.ChildNodes)
24ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
25InBlock.gif            if (test.Name == "form")//找到名称为form的节点
26ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
27InBlock.gif                foreach (XmlNode test1 in test.ChildNodes)//在form节点中便利节点
28ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{//找到在“form”子节点中属性“name”的值为"val"的节点。
29InBlock.gif                    if (test1.Attributes.Count > 0 && test1.Attributes["name"].InnerXml == "val")
30ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
31InBlock.gif                        test1.Attributes["name"].InnerXml = "老鼠";//设置name属性的值为“老鼠”
32ExpandedSubBlockEnd.gif                    }

33InBlock.gif                    else if (test1.Name == "block")//找到“block”节点
34ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
35InBlock.gif                        foreach (XmlNode test2 in test1.ChildNodes)
36ExpandedSubBlockStart.gifContractedSubBlock.gif                        dot.gif{//将“block”节点的所以子节点属性“cond”中的“Val”替换成“老鼠”。
37InBlock.gif                            if (test2.Attributes["cond"].InnerXml.Contains("val"))
38ExpandedSubBlockStart.gifContractedSubBlock.gif                            dot.gif{
39InBlock.gif                                string str = test2.Attributes["cond"].InnerXml;
40InBlock.gif                                str = "老鼠" + str.Substring(3);//不能用“Replace”真是郁闷
41InBlock.gif                                test2.Attributes["cond"].InnerXml = str;
42ExpandedSubBlockEnd.gif                            }

43ExpandedSubBlockEnd.gif                        }

44ExpandedSubBlockEnd.gif                    }

45ExpandedSubBlockEnd.gif                }

46InBlock.gif                XmlElement node = doc.CreateElement("老鼠");//建立“老鼠”节点
47InBlock.gif                XmlAttribute attribute = doc.CreateAttribute("zizi");
48InBlock.gif                node.SetAttributeNode(attribute);
49InBlock.gif                node.SetAttribute("zizi""……");
50InBlock.gif                test.AppendChild(node);
51InBlock.gif                node.InnerXml = "……";
52InBlock.gif                test.InsertBefore(node, test.LastChild);//将新建的“老鼠”节点给“form”
53InBlock.gif                doc.Save(Response.OutputStream);//将修改后的xml文件以流的方式输出到当前页面。
54ExpandedSubBlockEnd.gif            }

55ExpandedSubBlockEnd.gif        }

56ExpandedSubBlockEnd.gif    }

57ExpandedBlockEnd.gif}

58 None.gif

看看,这就是结果。

 1 None.gif <? xml version="1.0" encoding="utf-8"  ?>  
 2 None.gif  < vxml  xmls ="http://www.w3.org/2001/vxml" >
 3 None.gif  < form >
 4 None.gif   < var  name ="老鼠"   />  
 5 None.gif   < assign  name ="老鼠"  expr ="8"   />  
 6 None.gif  < block >
 7 None.gif  < if  cond ="老鼠 < 9" >
 8 None.gif   < prompt > 此值小于9 </ prompt >  
 9 None.gif   </ if >
10 None.gif  < if  cond ="老鼠 > 2" >
11 None.gif   < prompt > 此值大于2 </ prompt >  
12 None.gif   </ if >
13 None.gif   </ block >
14 None.gif   < 老鼠 zizi ="……" > …… </ 老鼠 >  
15 None.gif   </ form >
16 None.gif   </ vxml >

        好了,写完了,真累!哦,下班了!走。 14.gif

转载于:https://www.cnblogs.com/old3ds/archive/2007/05/24/758775.html