我第一次不得不使用HttpUtility
解码器。我是否将 放在HttpUtility
这段代码的末尾(如下)?还是我创建一个新方法并通过它运行字符串?另一个需要注意的是,下面的代码引用了一个类名Utils
,其中正在进行一些 XML 解析。HttpUtility
如果解决方案是创建一个新方法,在 XML 解析之后放置是否正确?
在 XML 解析结束时,该方法将解析交给链接“返回链接”。然后我是否需要将解析移交给HttpUtility
,并在移交结束时HttpUtility
将结果移交给链接?Utils.CS
粘贴在 Web 客户端代码下方。
抱歉这个冗长的问题,我只编码了大约 8 个月,并没有遇到所有情况。
public void LoadFeed()
{
//check if network and client are available
if (NetworkInterface.GetIsNetworkAvailable() && !String.IsNullOrEmpty(uri))
{
LoadingState = LoadingState.LOADING;
RaisePropertyChanged("LoadingState");
var wc = new WebClient();
wc.DownloadStringCompleted += (sender, e) =>
{
if (e.Error == null)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
LoadingState = LoadingState.COMPLETED;
FeedLinks = Utils.GetLinksFromFeed(e.Result);
RaisePropertyChanged("FeedLinks");
RaisePropertyChanged("LoadingState");
});
}
};
wc.DownloadStringAsync(new Uri(uri, UriKind.Absolute));
}
else
{
LoadingState = LoadingState.ERROR;
RaisePropertyChanged("LoadingState");
}
Utils.CS
:
public static List<Link> GetLinksFromFeed(string xmlString)
{
List<Link> links = null;
//try to parse result as rss feed
XDocument doc = XDocument.Parse(xmlString);
//grab default namespace
XNamespace xName = doc.Root.GetDefaultNamespace();
//parse items
links = (from item in doc.Descendants(xName + "item")
select new Link
{
Title = item.Element(xName + "title").Value,
Url = item.Element(xName + "link").Value,
}).ToList<Link>();
return links;
}