Visual Studio无法找到XML文件

时间:2013-01-25 15:19:46

标签: c# visual-studio-2010 windows-phone-7

我正在尝试开发Windows 7手机,我正在使用我需要解析的XML文件,然后执行Linq查询。

问题在于:

每当我尝试访问该文件(它存储在本地)时,它都会返回一个错误,指出该文件无法找到,因为它不是XAP包的一部分。

我尝试了另一种使用StreamReader的解决方案但是我仍然遇到类似的错误:

  

尝试访问方法失败System.IO.File.OpenText(System.String)

以下是我正在使用的代码:

using (StreamReader reader = File.OpenText("C:/Users/Desktop/Assign/obj/Debug/buildings.kml"))
        {
            var xdoc = XDocument.Load ("buildings.kml");
            XNamespace kml = "http://www.opengis.net/kml/2.2";

            var dict = xdoc.Descendants(kml + "Placemark")
                          .ToDictionary(d => d.Element(kml + "name").Value,
                          d => d.Element(kml + "id").Value);

            foreach (var b in dict) {
                Console.WriteLine ("Building Name -> " + b.Key + " Building ID -> " + b.Value);
            }
        }

该文件位于:> C:/Users/Desktop/Assign/obj/Debug/buildings.kml所以我看不出问题。在Visual Studio之外,我可以正确读取.xml文件。

希望有人可以提供帮助

编辑:

新代码 -

Dictionary<string, string> getBuildingNames()
    {
        Uri uri = new Uri(@"Data\mydata.kml", UriKind.Relative);

        StreamResourceInfo sri = Application.GetResourceStream(uri);

        StreamReader sr = new StreamReader(sri.Stream);

        var xdoc = XDocument.Load(sr);
        XNamespace kml = "http://www.opengis.net/kml/2.2";

        var dict = xdoc.Descendants(kml + "Placemark")
                      .ToDictionary(d => d.Element(kml + "name").Value,
                      d => d.Element(kml + "id").Value);


        return dict;


    }

错误: - 'NullReferenceException未被取消'

2 个答案:

答案 0 :(得分:4)

假设您确实尝试将此作为WP7项目的一部分(而不是与之相关的某些非移动项目,例如预处理),您不应该使用File.OpenText

选项:

答案 1 :(得分:1)

还有一些提示可以帮助您:

1)将xml文件的Build action属性更改为“Content”。 (选择文件并转到Visual Studio中的属性窗口)

2)如果您只想从文件中读取,则无需将文件保存在IsolatedStorage中。如果正确设置了Build Action属性,则可以直接读取它。

您可以使用XDocument读取文件。

XDocument xdoc = XDocument.Load(filepath);

其中 filepath 只是XML文件的相对路径,即如果你没有将它放在项目的任何文件夹中那么它就只是文件名(假设它就像是根文件名)目录)