LINQ to XML
由于微软提供的更新程序使用不方便,所以又写了此程序。此程序是本人一年前所写的一段程序,当时在开发一个CS版本报价系统,当时由于开发过程仓促,代码可能有点不是太规范此程序编译后只有一下AutoUpdate.exe文件与一个配置文件UpdateList.xml,主要通过本地程序与服务端程序文件的版本号来升级与更新本地程序文件。
UpdateList.xml文件内容如下:
<?xml version="1.0" encoding="gb2312"?>
<AutoUpdater>
<description>Application autoUpdate</description>
<Updater>
<Url>http://10.0.5.98/SoftUpdate/</Url>
<LastUpdateTime>2005-09-05</LastUpdateTime>
</Updater>
<Application applicationId="ItemSoft">
<EntryPoint>ItemSoft.exe</EntryPoint>
<Location>.</Location>
<Version>1.0.0.0</Version>
</Application>
<Files>
<File Ver="1.0.0.0" Name="ItemSoft.exe" />
<File Ver="1.0.0.0" Name="Reports\test.txt"/>
<File Ver="1.0.0.0" Name="Interop.grproLib.dll"/>
<File Ver="1.0.0.0" Name="Reports\test.grf"/>
</Files>
</AutoUpdater>
说明:
<description></description> 程序的描述;
<Url></Url> 更新服务器地址,为一个虚拟目录或站点路径;
<EntryPoint></EntryPoint> 需要更新主程序文件,为exe;
<Location>.</Location> 需要更新主程序文件所在路径;
<Version>1.0.0.0</Version> 主程序版本号;
<Files> </Files> 需要更新的文件列表;Ver:文件版本号,Name:文件名,包括路径(相对);
使用时,在更新服务器上新建Web虚拟目录或站点,然后将需要更新的文件与UpdateList.xml放在上面;
本地将AutoUpdate.exe与UpdateList.xml放在主程序的根目录下。本地UpdateList.xml中的版本号如果小于服务端,自动程序会自动下载所需要更新的文件。
本人的完整.Net打包程序下载中所带的项目中,就使用了此更新程序。
c#中使用linq to xml访问xml文件 2010-04-07 17:35 使用linq to xml可以很方便的实现对xml文件的访问,在网上看到的写的这方面的帖子都稍微有一些混乱。今天博客园主页上转过来的那篇文章写的也比较不清楚,下面把我在平常中使用linq to xml访问文件的方式写下来,供没有写过的兄弟参考: 首先第一步是选中要访问xml文件的属性copy to out(如test.xml),选择always,这步的意思是这个xml文件始终会被输出到可执行文件所在的文件夹,这样我们才可以直接使用不带路径的文件名来访问它。下面来看这个xml文件的内容: one two three <test_ name="firstname" value="xu"> <test_ name="lastname" value="jin"> <test_ name="lastname" value="lin"> test1_value 只是表明xml的根节点,定义第一种格式,可以无限嵌套节点,是的一个多值嵌套子节点,节点中已经赋了三个“值”:one two three ,在后面的代码中,将说明怎么读取这几个值。 定义第二种格式,<test_>节点中没有“值”,但是却增加了“属性”name 和 value ,属性的名字可以自定义。我们在后面也会说明如何读取这些属性里面的值。这两种方式可以配合使用,就是xml中的第三种模式,不做另外的说明,在下面的访问代码中也没有做访问实例,可以参考前两种自己组合,下面来看代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace LinqXml { class Program { static void Main(string[] args) { //第一种xml格式的读法 var firstCollection = from test in XElement.Load("test.xml").Element("FirstStyle").Elements("Test") select test.Value; foreach (string s in firstCollection) { Console.WriteLine(s); } //第二种xml格式的读法 var secondCollection = from test in XElement.Load("test.xml").Element("SecondStyle").Elements("Test_") where test.Attribute("name").Value.Equals("lastname") select test.Attribute("value").Value; foreach (string s in secondCollection) { Console.WriteLine(s); } } } } 在进行xml节点选择的时候,自外而内,跟节点不用选,使用节点名称选择。如果该节点是单节点(如几种Style的节点),则应该用Element("")来选择,如果是多节点(如),则必须使用Elements("")来选择,如果选用Element(""),则只会返回该类节点的第一个。linq 语法稍微解释一下,from制定选择的范围,where指定选择的条件,selete 指定选择的目标。如果不明白可以把代码实践一下调试看看