本文整理汇总了C#中SyndicationResourceLoadSettings类的典型用法代码示例。如果您正苦于以下问题:C# SyndicationResourceLoadSettings类的具体用法?C# SyndicationResourceLoadSettings怎么用?C# SyndicationResourceLoadSettings使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SyndicationResourceLoadSettings类属于命名空间,在下文中一共展示了SyndicationResourceLoadSettings类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Atom03SyndicationResourceAdapter
/// <summary>
/// Initializes a new instance of the <see cref="Atom03SyndicationResourceAdapter"/> class using the supplied <see cref="XPathNavigator"/> and <see cref="SyndicationResourceLoadSettings"/>.
/// </summary>
/// <param name="navigator">A read-only <see cref="XPathNavigator"/> object for navigating through the syndication feed information.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> object used to configure the load operation of the <see cref="AtomFeed"/>.</param>
/// <remarks>
/// This class expects the supplied <paramref name="navigator"/> to be positioned on the XML element that represents a <see cref="AtomFeed"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="navigator"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
public Atom03SyndicationResourceAdapter(XPathNavigator navigator, SyndicationResourceLoadSettings settings)
: base(navigator, settings)
{
//------------------------------------------------------------
// Initialization and argument validation handled by base class
//------------------------------------------------------------
}
示例2: SyndicationExtensionAdapter
/// <summary>
/// Initializes a new instance of the <see cref="SyndicationExtensionAdapter"/> class using the supplied <see cref="XPathNavigator"/> and <see cref="SyndicationResourceLoadSettings"/>.
/// </summary>
/// <param name="navigator">A read-only <see cref="XPathNavigator"/> object for navigating through the extended syndication resource information.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> object used to configure the load operation of the <see cref="IExtensibleSyndicationObject"/>.</param>
/// <exception cref="ArgumentNullException">The <paramref name="navigator"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
public SyndicationExtensionAdapter(XPathNavigator navigator, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Validate parameters
//------------------------------------------------------------
Guard.ArgumentNotNull(navigator, "navigator");
Guard.ArgumentNotNull(settings, "settings");
adapterNavigator = navigator;
adapterSettings = settings;
}
示例3: Load
/// <summary>
/// Loads the syndication resource from the specified <see cref="XmlReader"/>.
/// </summary>
/// <param name="reader">The <b>XmlReader</b> used to load the syndication resource.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> object used to configure the <see cref="RssFeed"/> instance. This value can be <b>null</b>.</param>
/// <remarks>
/// After the load operation has successfully completed, the <see cref="RssFeed.Loaded"/> event will be raised.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="reader"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="FormatException">The <paramref name="reader"/> data does not conform to the expected syndication content format. In this case, the feed remains empty.</exception>
/// <exception cref="XmlException">There is a load or parse error in the XML. In this case, the feed remains empty.</exception>
public void Load(XmlReader reader, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(reader, "reader");
//------------------------------------------------------------
// Use reader to create a IXPathNavigable to load from
//------------------------------------------------------------
this.Load(new XPathDocument(reader), settings);
}
示例4: FillFeedOptionals
/// <summary>
/// Modifies the <see cref="AtomFeed"/> optional entities to match the supplied <see cref="XPathNavigator"/> data source.
/// </summary>
/// <param name="feed">The <see cref="AtomFeed"/> to be filled.</param>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve XML namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the fill operation.</param>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="AtomFeed"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="feed"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private static void FillFeedOptionals(AtomFeed feed, XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(feed, "feed");
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNavigator generatorNavigator = source.SelectSingleNode("atom:generator", manager);
XPathNavigator copyrightNavigator = source.SelectSingleNode("atom:copyright", manager);
XPathNavigator taglineNavigator = source.SelectSingleNode("atom:tagline", manager);
if (generatorNavigator != null)
{
feed.Generator = Atom03SyndicationResourceAdapter.CreateGenerator(generatorNavigator, manager, settings);
}
if (copyrightNavigator != null)
{
feed.Rights = Atom03SyndicationResourceAdapter.CreateTextContent(copyrightNavigator, manager, settings);
}
if (taglineNavigator != null)
{
feed.Subtitle = Atom03SyndicationResourceAdapter.CreateTextContent(taglineNavigator, manager, settings);
}
}
示例5: FillEntryOptionals
/// <summary>
/// Modifies the <see cref="AtomEntry"/> optional entities to match the supplied <see cref="XPathNavigator"/> data source.
/// </summary>
/// <param name="entry">The <see cref="AtomEntry"/> to be filled.</param>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve XML namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the fill operation.</param>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents an Atom 0.3 element.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="entry"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private static void FillEntryOptionals(AtomEntry entry, XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(entry, "entry");
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNavigator contentNavigator = source.SelectSingleNode("atom:content", manager);
XPathNavigator createdNavigator = source.SelectSingleNode("atom:created", manager);
XPathNavigator summaryNavigator = source.SelectSingleNode("atom:summary", manager);
if (contentNavigator != null)
{
entry.Content = Atom03SyndicationResourceAdapter.CreateContent(contentNavigator, manager, settings);
}
if (createdNavigator != null)
{
DateTime publishedOn;
if (SyndicationDateTimeUtility.TryParseRfc3339DateTime(createdNavigator.Value, out publishedOn))
{
entry.PublishedOn = publishedOn;
}
}
if (summaryNavigator != null)
{
entry.Summary = Atom03SyndicationResourceAdapter.CreateTextContent(summaryNavigator, manager, settings);
}
}
示例6: CreateTextContent
/// <summary>
/// Creates a <see cref="AtomTextConstruct"/> using the supplied <see cref="XPathNavigator"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve XML namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the fill operation.</param>
/// <returns>A <see cref="AtomTextConstruct"/> instance initialized using the supplied <paramref name="source"/>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a Atom 0.3 Content construct.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private static AtomTextConstruct CreateTextContent(XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
AtomTextConstruct content = new AtomTextConstruct();
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract common attributes information
//------------------------------------------------------------
AtomUtility.FillCommonObjectAttributes(content, source);
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
if (source.HasAttributes)
{
string modeAttribute = source.GetAttribute("mode", String.Empty);
if (!String.IsNullOrEmpty(modeAttribute))
{
if (String.Compare(modeAttribute, "base64", StringComparison.OrdinalIgnoreCase) == 0)
{
content.TextType = AtomTextConstructType.Text;
}
else if (String.Compare(modeAttribute, "escaped", StringComparison.OrdinalIgnoreCase) == 0)
{
content.TextType = AtomTextConstructType.Html;
}
else if (String.Compare(modeAttribute, "xml", StringComparison.OrdinalIgnoreCase) == 0)
{
content.TextType = AtomTextConstructType.Xhtml;
}
else
{
content.TextType = AtomTextConstructType.Text;
}
}
}
if (content.TextType == AtomTextConstructType.Xhtml)
{
XPathNavigator xhtmlDivNavigator = source.SelectSingleNode("xhtml:div", manager);
if (xhtmlDivNavigator != null && !String.IsNullOrEmpty(xhtmlDivNavigator.Value))
{
content.Content = xhtmlDivNavigator.Value;
}
else if (!String.IsNullOrEmpty(source.Value))
{
content.Content = source.Value;
}
}
else if (!String.IsNullOrEmpty(source.Value))
{
content.Content = source.Value;
}
SyndicationExtensionAdapter adapter = new SyndicationExtensionAdapter(source, settings);
adapter.Fill(content, manager);
return content;
}
示例7: CreateGenerator
/// <summary>
/// Creates a <see cref="AtomGenerator"/> using the supplied <see cref="XPathNavigator"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve XML namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the fill operation.</param>
/// <returns>A <see cref="AtomGenerator"/> instance initialized using the supplied <paramref name="source"/>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a Atom 0.3 generator element.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private static AtomGenerator CreateGenerator(XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
AtomGenerator generator = new AtomGenerator();
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract common attributes information
//------------------------------------------------------------
AtomUtility.FillCommonObjectAttributes(generator, source);
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
if(source.HasAttributes)
{
string urlAttribute = source.GetAttribute("url", String.Empty);
string versionAttribute = source.GetAttribute("version", String.Empty);
if (!String.IsNullOrEmpty(urlAttribute))
{
Uri uri;
if (Uri.TryCreate(urlAttribute, UriKind.RelativeOrAbsolute, out uri))
{
generator.Uri = uri;
}
}
if (!String.IsNullOrEmpty(versionAttribute))
{
generator.Version = versionAttribute;
}
}
if (!String.IsNullOrEmpty(source.Value))
{
generator.Content = source.Value;
}
SyndicationExtensionAdapter adapter = new SyndicationExtensionAdapter(source, settings);
adapter.Fill(generator, manager);
return generator;
}
示例8: Load
/// <summary>
/// Loads this <see cref="RssImage"/> using the supplied <see cref="XPathNavigator"/> and <see cref="SyndicationResourceLoadSettings"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the load operation.</param>
/// <returns><b>true</b> if the <see cref="RssImage"/> was initialized using the supplied <paramref name="source"/>, otherwise <b>false</b>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="RssImage"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
public bool Load(XPathNavigator source, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
bool wasLoaded = false;
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
wasLoaded = this.Load(source);
//------------------------------------------------------------
// Attempt to extract syndication extension information
//------------------------------------------------------------
SyndicationExtensionAdapter adapter = new SyndicationExtensionAdapter(source, settings);
adapter.Fill(this);
return wasLoaded;
}
示例9: LoadProfile
/// <summary>
/// Loads the optional RSS Profile elements of this <see cref="RssChannel"/> using the supplied <see cref="XPathNavigator"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the load operation.</param>
/// <returns><b>true</b> if the <see cref="RssChannel"/> was initialized using the supplied <paramref name="source"/>, otherwise <b>false</b>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="RssChannel"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
private bool LoadProfile(XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
bool wasLoaded = false;
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNodeIterator atomLinkIterator = source.Select("atom:link", manager);
if (atomLinkIterator != null && atomLinkIterator.Count > 0)
{
while (atomLinkIterator.MoveNext())
{
if (atomLinkIterator.Current.HasAttributes)
{
string relAttribute = atomLinkIterator.Current.GetAttribute("rel", String.Empty);
if (String.Compare(relAttribute, "self", StringComparison.OrdinalIgnoreCase) == 0)
{
string hrefAttribute = atomLinkIterator.Current.GetAttribute("href", String.Empty);
if (!String.IsNullOrEmpty(hrefAttribute))
{
Uri atomLink;
if (Uri.TryCreate(hrefAttribute, UriKind.RelativeOrAbsolute, out atomLink))
{
this.SelfLink = atomLink;
wasLoaded = true;
}
}
break;
}
}
}
}
return wasLoaded;
}
示例10: LoadOptionals
/// <summary>
/// Loads the optional elements of this <see cref="RssChannel"/> using the supplied <see cref="XPathNavigator"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the load operation.</param>
/// <returns><b>true</b> if the <see cref="RssChannel"/> was initialized using the supplied <paramref name="source"/>, otherwise <b>false</b>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="RssChannel"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
private bool LoadOptionals(XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
bool wasLoaded = false;
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNavigator cloudNavigator = source.SelectSingleNode("cloud", manager);
XPathNavigator copyrightNavigator = source.SelectSingleNode("copyright", manager);
XPathNavigator generatorNavigator = source.SelectSingleNode("generator", manager);
XPathNavigator imageNavigator = source.SelectSingleNode("image", manager);
XPathNavigator languageNavigator = source.SelectSingleNode("language", manager);
XPathNavigator lastBuildDateNavigator = source.SelectSingleNode("lastBuildDate", manager);
XPathNavigator managingEditorNavigator = source.SelectSingleNode("managingEditor", manager);
XPathNavigator publicationNavigator = source.SelectSingleNode("pubDate", manager);
XPathNavigator ratingNavigator = source.SelectSingleNode("rating", manager);
XPathNavigator textInputNavigator = source.SelectSingleNode("textInput", manager);
XPathNavigator timeToLiveNavigator = source.SelectSingleNode("ttl", manager);
XPathNavigator webMasterNavigator = source.SelectSingleNode("webMaster", manager);
if (cloudNavigator != null)
{
RssCloud cloud = new RssCloud();
if (cloud.Load(cloudNavigator, settings))
{
this.Cloud = cloud;
wasLoaded = true;
}
}
if (copyrightNavigator != null)
{
this.Copyright = copyrightNavigator.Value;
wasLoaded = true;
}
if (generatorNavigator != null)
{
this.Generator = generatorNavigator.Value;
wasLoaded = true;
}
if (imageNavigator != null)
{
RssImage image = new RssImage();
if (image.Load(imageNavigator, settings))
{
this.Image = image;
wasLoaded = true;
}
}
if (languageNavigator != null && !String.IsNullOrEmpty(languageNavigator.Value))
{
try
{
CultureInfo language = new CultureInfo(languageNavigator.Value);
this.Language = language;
wasLoaded = true;
}
catch (ArgumentException)
{
System.Diagnostics.Trace.TraceWarning("RssChannel unable to determine CultureInfo with a name of {0}.", languageNavigator.Value);
}
}
if (lastBuildDateNavigator != null)
{
DateTime lastBuildDate;
if (SyndicationDateTimeUtility.TryParseRfc822DateTime(lastBuildDateNavigator.Value, out lastBuildDate))
{
this.LastBuildDate = lastBuildDate;
wasLoaded = true;
}
}
if (managingEditorNavigator != null)
{
//.........这里部分代码省略.........
示例11: LoadCollections
/// <summary>
/// Loads the collection elements of this <see cref="RssChannel"/> using the supplied <see cref="XPathNavigator"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the load operation.</param>
/// <returns><b>true</b> if the <see cref="RssChannel"/> was initialized using the supplied <paramref name="source"/>, otherwise <b>false</b>.</returns>
/// <remarks>
/// <para>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="RssChannel"/>.
/// </para>
/// <para>
/// The number of <see cref="RssChannel.Items"/> that are loaded is limited based on the <see cref="SyndicationResourceLoadSettings.RetrievalLimit"/>.
/// </para>
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private bool LoadCollections(XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
bool wasLoaded = false;
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNodeIterator categoryIterator = source.Select("category", manager);
XPathNodeIterator skipDaysIterator = source.Select("skipDays/day", manager);
XPathNodeIterator skipHoursIterator = source.Select("skipHours/hour", manager);
XPathNodeIterator itemIterator = source.Select("item", manager);
if (categoryIterator != null && categoryIterator.Count > 0)
{
while (categoryIterator.MoveNext())
{
RssCategory category = new RssCategory();
if (category.Load(categoryIterator.Current, settings))
{
this.Categories.Add(category);
wasLoaded = true;
}
}
}
if (skipDaysIterator != null && skipDaysIterator.Count > 0)
{
while (skipDaysIterator.MoveNext())
{
if (!String.IsNullOrEmpty(skipDaysIterator.Current.Value))
{
try
{
DayOfWeek day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), skipDaysIterator.Current.Value, true);
if (!this.SkipDays.Contains(day))
{
this.SkipDays.Add(day);
wasLoaded = true;
}
}
catch (ArgumentException)
{
System.Diagnostics.Trace.TraceWarning("RssChannel unable to determine DayOfWeek with a name of {0}.", skipDaysIterator.Current.Value);
}
}
}
}
if (skipHoursIterator != null && skipHoursIterator.Count > 0)
{
while (skipHoursIterator.MoveNext())
{
int hour;
if (Int32.TryParse(skipHoursIterator.Current.Value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out hour))
{
if (!this.SkipHours.Contains(hour) && (hour >= 0 && hour <= 23))
{
this.SkipHours.Add(hour);
wasLoaded = true;
}
else
{
System.Diagnostics.Trace.TraceWarning("RssChannel unable to add duplicate or out-of-range skip hour with a value of {0}.", hour);
}
}
}
}
if (itemIterator != null && itemIterator.Count > 0)
{
int counter = 0;
while (itemIterator.MoveNext())
//.........这里部分代码省略.........
示例12: Load
/// <summary>
/// Loads this <see cref="RssChannel"/> using the supplied <see cref="XPathNavigator"/> and <see cref="SyndicationResourceLoadSettings"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the load operation.</param>
/// <returns><b>true</b> if the <see cref="RssChannel"/> was initialized using the supplied <paramref name="source"/>, otherwise <b>false</b>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="RssChannel"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
public bool Load(XPathNavigator source, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
bool wasLoaded = false;
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Create namespace resolver
//------------------------------------------------------------
XmlNamespaceManager manager = new XmlNamespaceManager(source.NameTable);
manager.AddNamespace("atom", "http://www.w3.org/2005/Atom");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNavigator descriptionNavigator = source.SelectSingleNode("description", manager);
XPathNavigator linkNavigator = source.SelectSingleNode("link", manager);
XPathNavigator titleNavigator = source.SelectSingleNode("title", manager);
//------------------------------------------------------------
// Load required channel information
//------------------------------------------------------------
if (descriptionNavigator != null && !String.IsNullOrEmpty(descriptionNavigator.Value))
{
this.Description = descriptionNavigator.Value;
wasLoaded = true;
}
if (linkNavigator != null)
{
Uri link;
if (Uri.TryCreate(linkNavigator.Value, UriKind.RelativeOrAbsolute, out link))
{
this.Link = link;
wasLoaded = true;
}
}
if (titleNavigator != null && !String.IsNullOrEmpty(titleNavigator.Value))
{
this.Title = titleNavigator.Value;
wasLoaded = true;
}
//------------------------------------------------------------
// Load optional channel information
//------------------------------------------------------------
if (this.LoadOptionals(source, manager, settings))
{
wasLoaded = true;
}
//------------------------------------------------------------
// Load channel collections information
//------------------------------------------------------------
if (this.LoadCollections(source, manager, settings))
{
wasLoaded = true;
}
//------------------------------------------------------------
// Load optional RSS Profile channel information
//------------------------------------------------------------
if (this.LoadProfile(source, manager, settings))
{
wasLoaded = true;
}
//------------------------------------------------------------
// Attempt to extract syndication extension information
//------------------------------------------------------------
SyndicationExtensionAdapter adapter = new SyndicationExtensionAdapter(source, settings);
adapter.Fill(this);
return wasLoaded;
}
示例13: Load
/// <summary>
/// Loads this <see cref="BlogMLAuthor"/> using the supplied <see cref="XPathNavigator"/> and <see cref="SyndicationResourceLoadSettings"/>.
/// </summary>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the load operation.</param>
/// <returns><b>true</b> if the <see cref="BlogMLAuthor"/> was initialized using the supplied <paramref name="source"/>, otherwise <b>false</b>.</returns>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="BlogMLAuthor"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
public bool Load(XPathNavigator source, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Local members
//------------------------------------------------------------
bool wasLoaded = false;
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract common attributes information
//------------------------------------------------------------
if (BlogMLUtility.FillCommonObject(this, source, settings))
{
wasLoaded = true;
}
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
if(source.HasAttributes)
{
string emailAttribute = source.GetAttribute("email", String.Empty);
if (!String.IsNullOrEmpty(emailAttribute))
{
this.EmailAddress = emailAttribute;
wasLoaded = true;
}
}
//------------------------------------------------------------
// Attempt to extract syndication extension information
//------------------------------------------------------------
SyndicationExtensionAdapter adapter = new SyndicationExtensionAdapter(source, settings);
adapter.Fill(this);
return wasLoaded;
}
示例14: FillFeedOptionals
/// <summary>
/// Modifies the <see cref="AtomFeed"/> optional entities to match the supplied <see cref="XPathNavigator"/> data source.
/// </summary>
/// <param name="feed">The <see cref="AtomFeed"/> to be filled.</param>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve XML namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the fill operation.</param>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="AtomFeed"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="feed"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private static void FillFeedOptionals(AtomFeed feed, XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(feed, "feed");
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNavigator generatorNavigator = source.SelectSingleNode("atom:generator", manager);
XPathNavigator iconNavigator = source.SelectSingleNode("atom:icon", manager);
XPathNavigator logoNavigator = source.SelectSingleNode("atom:logo", manager);
XPathNavigator rightsNavigator = source.SelectSingleNode("atom:rights", manager);
XPathNavigator subtitleNavigator = source.SelectSingleNode("atom:subtitle", manager);
if (generatorNavigator != null)
{
feed.Generator = new AtomGenerator();
feed.Generator.Load(generatorNavigator, settings);
}
if (iconNavigator != null)
{
feed.Icon = new AtomIcon();
feed.Icon.Load(iconNavigator, settings);
}
if (logoNavigator != null)
{
feed.Logo = new AtomLogo();
feed.Logo.Load(logoNavigator, settings);
}
if (rightsNavigator != null)
{
feed.Rights = new AtomTextConstruct();
feed.Rights.Load(rightsNavigator, settings);
}
if (subtitleNavigator != null)
{
feed.Subtitle = new AtomTextConstruct();
feed.Subtitle.Load(subtitleNavigator, settings);
}
}
示例15: FillEntryOptionals
/// <summary>
/// Modifies the <see cref="AtomEntry"/> optional entities to match the supplied <see cref="XPathNavigator"/> data source.
/// </summary>
/// <param name="entry">The <see cref="AtomEntry"/> to be filled.</param>
/// <param name="source">The <see cref="XPathNavigator"/> to extract information from.</param>
/// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve XML namespace prefixes.</param>
/// <param name="settings">The <see cref="SyndicationResourceLoadSettings"/> used to configure the fill operation.</param>
/// <remarks>
/// This method expects the supplied <paramref name="source"/> to be positioned on the XML element that represents a <see cref="AtomEntry"/>.
/// </remarks>
/// <exception cref="ArgumentNullException">The <paramref name="entry"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception>
/// <exception cref="ArgumentNullException">The <paramref name="settings"/> is a null reference (Nothing in Visual Basic).</exception>
private static void FillEntryOptionals(AtomEntry entry, XPathNavigator source, XmlNamespaceManager manager, SyndicationResourceLoadSettings settings)
{
//------------------------------------------------------------
// Validate parameter
//------------------------------------------------------------
Guard.ArgumentNotNull(entry, "entry");
Guard.ArgumentNotNull(source, "source");
Guard.ArgumentNotNull(manager, "manager");
Guard.ArgumentNotNull(settings, "settings");
//------------------------------------------------------------
// Attempt to extract syndication information
//------------------------------------------------------------
XPathNavigator contentNavigator = source.SelectSingleNode("atom:content", manager);
XPathNavigator publishedNavigator = source.SelectSingleNode("atom:published", manager);
XPathNavigator rightsNavigator = source.SelectSingleNode("atom:rights", manager);
XPathNavigator sourceNavigator = source.SelectSingleNode("atom:source", manager);
XPathNavigator summaryNavigator = source.SelectSingleNode("atom:summary", manager);
if (contentNavigator != null)
{
entry.Content = new AtomContent();
entry.Content.Load(contentNavigator, settings);
}
if (publishedNavigator != null)
{
DateTime publishedOn;
if (SyndicationDateTimeUtility.TryParseRfc3339DateTime(publishedNavigator.Value, out publishedOn))
{
entry.PublishedOn = publishedOn;
}
}
if (rightsNavigator != null)
{
entry.Rights = new AtomTextConstruct();
entry.Rights.Load(rightsNavigator, settings);
}
if (sourceNavigator != null)
{
entry.Source = new AtomSource();
entry.Source.Load(sourceNavigator, settings);
}
if (summaryNavigator != null)
{
entry.Summary = new AtomTextConstruct();
entry.Summary.Load(summaryNavigator, settings);
}
}