OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言 。目前流行于收集博客的 RSS 源,便于用户转移自己的订阅项目。
本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。
本文是两个部分的第二篇,前者是理解 OPML 格式,此篇是解析此格式:
OPML 格式
在解析之前,最好先理解此格式的的元素组成和元素属性,所以如果你没有阅读概念篇,请先前往阅读。
创建适用于 RSS 的简易 OPML 模型
我们先为模型创建基类 OpmlModel 。
为了方便在客户端应用中使用,可以使其继承自 INotifyPropertyChanged 。
namespace Walterlv.Rssman.Models
{
public abstract class OpmlModel : NotificationObject
{
public void Deserialize(XElement element)
{
OnDeserializing(element);
}
protected abstract void OnDeserializing(XElement element);
}
}
namespace Walterlv.Rssman.Models
{
public abstract class NotificationObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected void SetValue(ref T field, T value, [CallerMemberName] string propertyName = null)
{
if (Equals(field, value)) return;
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
[NotifyPropertyChangedInvocator