第十三章:Web应用程序包 打包需要解决两点 1)打包之后的网站中应该没有源文件(*.cs) 2)打包过程中应该把DotnetFrameworker打包进去,这样在安装过程 会自动识别目标计算机上是否有fw,如果没有则首先安装fw 打包的步骤: 1)安装WebDeployment。这是微软公司为了弥补vs2005自动的web打包而 发布一个插件,它可以把一个网站进行编译,其结果是没有源文件也可以运行 2)创建一个web应用程序 3)对准web应用程序单右-->add WebDeployment Project,确定 4)选择WebDeployment Project单右-->生成,就可以生成一个没有*.cs的网站 5)添加一个Web安装项目 6)选中Web安装项目按F4,弹出属性窗口,在其中输入安装项目的信息,包含:安装的标题,软件的作者等等 7)选中Web安装项目按单右-->属性-->系统必备--->选择"从与我应用程序相同的位置下载系统必备组件 8)选中"web应用程序文件夹"--->单右-->添加-->项目输出-->选择以前通过WebDeployment Project生成的项目-->确定 9)选中Web安装项目按单右-->生成--->在生成的文件夹的Debug文件夹中会看到 dotnetfx,setup.exe.WeijinSetUp.msi三个安装文件 10)把这三个安装文件刻成光盘,安装到目标文件就可 第十四章 xml文件的操作 1)在asp.net中要操作xml文件有三种方式 2)xmldocument类,xmlTextReader,xmlTextWriter类,DataSet类 xmldocument类 1:xmldocument实际上利用xml文档对像模型(dom)对xml进行操作 2:工作原理是把xml文档中的全部内容读到内存中,形成一个xml文档树 3:通过dom能够对xml文档进行增加,删除,修改等操作 4:缺点是如果文档非常大的话,则会导致内存资源不足的问题 有如下的xml文件: <?xml version="1.0" encoding="utf-8" ?> <studs> <stud> <id>S1</id> <name OtherName="二狗">张三</name> <age>20</age> </stud> <stud> <id>S2</id> <name>李四</name> <age>34</age> </stud> <stud> <id>S3</id> <name>小张</name> <age>20</age> </stud> </studs> document | | -------------------- | | xml studs | | ------------------------------------ | | | stud stud stud | | ----------- | | | id name age | | | S1 张三 20 读文件: XmlDataDocument doc = new XmlDataDocument(); string path = Environment.CurrentDirectory; doc.Load(path + "\\XMLFile1.xml"); XmlElement root =doc.DocumentElement;//得到文档的根 foreach (XmlNode StudNode in root.ChildNodes) { string id = StudNode.ChildNodes[0].FirstChild.InnerText; string name = StudNode.ChildNodes[1].FirstChild.InnerText; string age = StudNode.ChildNodes[2].FirstChild.InnerText; ListViewItem lv = new ListViewItem(id); this.listView1.Items.Add(lv); lv.SubItems.Add(name); lv.SubItems.Add(age); } 增加文件: XmlDocument doc = new XmlDocument(); string path =Environment.CurrentDirectory + "\\XMLFile1.xml"; doc.Load(path); XmlElement root = doc.DocumentElement; XmlNode StudNode=doc.CreateNode(XmlNodeType.Element, "stud", ""); XmlNode IdNode = doc.CreateNode(XmlNodeType.Element, "id", ""); IdNode.InnerText = "S99"; XmlNode NameNode = doc.CreateNode(XmlNodeType.Element, "name", ""); NameNode.InnerText = "小二"; XmlNode AgeNode = doc.CreateNode(XmlNodeType.Element, "age", ""); AgeNode.InnerText ="67"; StudNode.AppendChild(IdNode); StudNode.AppendChild(NameNode); StudNode.AppendChild(AgeNode); root.AppendChild(StudNode); doc.Save(path); 修改文件: XmlDataDocument doc = new XmlDataDocument(); string path = Environment.CurrentDirectory; doc.Load(path + "\\XMLFile1.xml"); XmlElement root =doc.DocumentElement; root.ChildNodes[0].ChildNodes[0].FirstChild.InnerText = "S7"; doc.Save(path + "\\XMLFile1.xml"); 删除文件: XmlDataDocument doc = new XmlDataDocument(); string path = Environment.CurrentDirectory; doc.Load(path + "\\XMLFile1.xml"); XmlElement root =doc.DocumentElement; root.RemoveChild(root.ChildNodes[0]); doc.Save(path + "\\XMLFile1.xml"); 读取属性: XmlDataDocument doc = new XmlDataDocument(); string path = Environment.CurrentDirectory; doc.Load(path + "\\XMLFile1.xml"); XmlElement root =doc.DocumentElement; string st=root.ChildNodes[0].ChildNodes[1].Attributes["OtherName"].InnerText; MessageBox.Show(st); xmlTextReader类 1) 这个类提供一个只读的访问xml文件的方式,相当于利用dom而言,非常快速,但是它只能够 读,不能修改,要修改可以利用xmlTextWriter类 2) 不论是xmlTextReader类还是xmlTextWriter类,它们对xml操作必须是从头到尾进行操作,也 就是说如果你想操作第100个节点的内容,它们都会从第一个节点一步一步移到100个节点之后才 能进行操作,这个与xmlDocumnet的处理机制完全不一样,所以xmlTextWriter非常不适合于修改 读文件: string path=Environment.CurrentDirectory+"\\XMLFile1.xml"; XmlTextReader xtr = new XmlTextReader(path); while (xtr.Read()) { if (xtr.HasAttributes) { MessageBox.Show(xtr.GetAttribute(0)); } if (xtr.NodeType == XmlNodeType.Element && xtr.Name == "id") //读id { if (xtr.Read()) { MessageBox.Show(xtr.Value); } } } xtr.Close(); } 写文件: XmlTextWriter xmlwrite = new XmlTextWriter("..\\..\\XMLFile.xml",Encoding.Default); xmlwrite.Formatting = Formatting.Indented; //设置换行标志 xmlwrite.WriteStartDocument();//写入开始位置 xmlwrite.WriteStartElement("peoples");//写入没有值的节点 xmlwrite.WriteStartElement("people");//写入没有值的节点 xmlwrite.WriteElementString("姓名", "张三");//写入有值的节点 xmlwrite.WriteEndElement();//为没有值的节点,写入结束标记 xmlwrite.WriteEndElement();//为没有值的节点,写入结束标记 xmlwrite.Flush();//把缓冲区的内容,真正的写入到文件中去 xmlwrite.Close();//关闭,以释放资源 DataSet类 读文件: string path = Environment.CurrentDirectory + "\\XMLFile1.xml"; DataSet ds = new DataSet(); ds.ReadXml(path); DataTable dt = ds.Tables[0]; string st = dt.Rows[i][j].ToString(); 增加: string path = Environment.CurrentDirectory + "\\XMLFile1.xml"; DataSet ds = new DataSet(); ds.ReadXml(path); DataTable dt = ds.Tables[0]; DataRow dr = dt.NewRow(); dr[0] = "S8"; dr[1] = "爸爸"; dr[2] = "45"; dt.Rows.Add(dr); ds.WriteXml(path); 修改: string path = Environment.CurrentDirectory + "\\XMLFile1.xml"; DataSet ds = new DataSet(); ds.ReadXml(path); DataTable dt = ds.Tables[0]; DataRow dr = dt.Rows[0]; dr[0] = "S8"; dr[1] = "爸爸"; dr[2] = "45"; ds.WriteXml(path); 三种方法总结: 1)如果操作的xml文件的结构与数据表相似,则优先考虑使用dataset 2)如果操作的xml文件的结构与数据表不相似: A:如果要读:则使用xmlTextReader对像 B:如果要修改:则使用xmlDocument对像 高级编程 实现客户端无刷新加传

评论