第十三章: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对像
高级编程
实现客户端无刷新加传
评论