4

我在最后两个代码行中的 URI 存在一些问题:我尝试从应用程序资源和站点获取 XML。在此之前,我对图像执行了相同的操作 - 一切正常。评论中的异常消息。

// Get image from site: 
// "pack://siteoforigin:,,,/http://www.designdownloader.com/item/pngs/user_f036/user_f036-20111114102144-00003.png"

// Get image from building resources (Build Action = Resources).
Uri uri_male_default = new Uri("pack://application:,,,/male.png");

// Get image from site: 
// "pack://siteoforigin:,,,/http://www.designdownloader.com/item/pngl/user_f046/user_f046-20111114102341-00003.png"

// Get image from building resources (Build Action = Resources).
Uri uri_female_default = new Uri("pack://application:,,,/myImages/famale.png"); 

// Create images (it's works fine):
img_male_default = new BitmapImage(uri_male_default);
img_female_default = new BitmapImage(uri_female_default);

//The next both cases ain't working:
// NotSupportedException: URI prefix isn't recognized.     
XElement xml_1 = XElement.Load("pack://application:,,,/SettingsX.xml"); // Get XML from building resources (Build Action = Resources).
XElement xml_2 = XElement.Load("pack://siteoforigin:,,,/https://skydrive.live.com/?cid=51b3145b64e05fef&id=51B3145B64E05FEF%21550");

XElement.Load获取一个 URI 作为参数。为什么我不能用 XML 做到这一点?

4

1 回答 1

4

从错误描述来看,我非常怀疑是否可以将 WPF 包 URI 传递给,XElement.Load但您始终可以使用相对路径并且它会起作用,示例代码如下:

Uri uri = new Uri("/SettingsX.xml", UriKind.Relative);
            System.Windows.Resources.StreamResourceInfo info = Application.GetResourceStream(uri); 
            XElement settings = XElement.Load(info.Stream);

编辑:

要从 Web 获取 xml 文件:

private void button1_Click(object sender, RoutedEventArgs e)
{
    string url = "Your URL...";
    var webClient = new System.Net.WebClient();
    webClient.DownloadStringCompleted += HttpsCompleted;
    webClient.DownloadStringAsync(new Uri(url));
}

private void HttpsCompleted(object sender, System.Net.DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
    {
        XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None);
    }
}
于 2012-10-30T05:39:37.790 回答