C# 从资源或站点获取XML

C# 从资源或站点获取XML,c#,.net,wpf,uri,C#,.net,Wpf,Uri,最后两行代码中的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 (Bu

最后两行代码中的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");

加载获取URI作为参数。为什么我不能用XML来做呢

根据错误描述判断,我非常怀疑是否有可能将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);
    }
}

谢谢它工作得很好:我已经从应用程序资源中阅读了XML。但是从站点读取XML文件呢?我已经尝试过这样的方法:
webclientweb=newwebclient();下载文件(“pack://siteoforigin:,,,/https://skydrive.live.com/?cid=51b3145b64e05fef&id=51B3145B64E05FEF%21550“,@“c:\temp\temp.xml”);下载文件(“https://skydrive.live.com/?cid=51b3145b64e05fef&id=51B3145B64E05FEF%21550“,@“c:\temp\temp2.xml”)可能是Microsoft的SkyDrive创建的链接无法通过此类方法读取(格式不兼容)?我遇到了异常:“远程服务器返回错误:(407)需要检查中介的真实性。”。我已尝试创建此类URL(这是我的SkyDrive):
字符串URL="https://skydrive.live.com/?cid=51b3145b64e05fef&id=51B3145B64E05FEF%21550“;
。我正在尝试下载SettingsX.xml文件