我在最后两个代码行中遇到了一些问题:我尝试从应用程序资源和站点获取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做呢?
答案 0 :(得分: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);
修改强>
从网络获取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);
}
}