2014-10-07 127 views
-1

我有.xml文件来存储我的应用程序中的数据。用应用程序打开文件

现在我想单击.xml文件 - >使用从.xml文件加载的数据启动我的应用程序。

是什么让应用程序运行xml解析metods?

我不知道如何做到这一点,当我用我的应用程序打开.xml文件时会发生什么? Windows是否使用.xml文件路径获取应用程序某种参数?另外WPF似乎没有通常处理这些参数的Main()方法。

任何想法如何做到这一点?

+0

它被称为[文件关联](http://en.wikipedia.org/wiki/File_association)。 – 2014-10-07 22:39:30

+1

使用'Environment.GetCommandLineArgs()',它将返回一个'string []'。索引0将是你的应用程序的路径,并且索引> = 1将有参数。因此,如果您打开与您的应用程序关联的文件,或者如果您单击 - >将文件拖到可执行文件上,应用程序将以2个参数运行(文件路径[[0]中的应用程序的文件路径和文件的文件路径在[1]中)。您可以在索引[1]处使用此文件路径在应用程序启动时打开您的xml文件。希望这是有道理的。 – learningcs 2014-10-08 05:03:00

+0

rshepp - 非常感谢。写下你的答案,以便我可以给你分 – Safiron 2014-10-11 10:45:58

回答

0

因此,这里是我做过什么:

我做我自己的文件扩展名.XXX(里面有,只是普通的XML),当我和我的应用程序中打开它,我在为参数启动窗口的构造检查计使用在

Environment.GetCommandLineArgs()

如果计数> 1,我得到这串的文件绝对路径的第二个参数。然后,我将字符串提取到处理文件打开的方法。

0

首先,您不能通过单击xml文件来运行应用程序。你应该做的是通过按钮点击或任何通过文件读取器或流读取器读取xml文件并采取这些内容并具有xmldocument doc = new xmldocument()的事件来调用某个方法。然后doc.LoadXml(filecontents)。然后,您可以使用内置的C#.NET方法解析文档,例如doc.SelectSingleNode(节点名称)。

0

如果您试图找出与特定文件扩展名关联的程序,那么有两种方法可以通过编程实现。第一种方法是通过执行名为FindExecutable的Win32方法。 DllImport看起来像这样:

[DllImport("shell32.dll")] 
static extern int FindExecutable(string lpFile, string lpDirectory, [Out] StringBuilder lpResult); 

第二种方法是在注册表中查找。要找出哪个应用程序双击XML文件将会打开,您可以查看HKEY_CLASSES_ROOT\.xml。然后你按照shell/open/command的条目。这将为您提供打开文件的应用程序名称和路径。

相关问题