public AtomEntryBase Read(XmlReader reader) { if (reader == null) throw new ArgumentNullException("reader"); AtomEntryBase entry = null; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name.Equals("entry")) { entry = new AtomEntry(); VisitEntryElement(reader, entry as AtomEntry); } if (reader.NodeType == XmlNodeType.Element && reader.Name.Equals("feed")) { entry = new AtomFeed(); VisitFeedElement(reader, entry as AtomFeed); } } return entry; }
private static void VisitContentElement(XmlReader reader, AtomEntry entry) { Uri uri; Uri.TryCreate(reader.GetAttribute("src"), UriKind.Absolute, out uri); var content = new AtomContent { Type = reader.GetAttribute("type"), Src = uri }; entry.AddContent(content); if (reader.IsEmptyElement) return; while (reader.Read()) { if (reader.Name.Equals("content") && reader.NodeType == XmlNodeType.EndElement) break; if (reader.NodeType == XmlNodeType.Text) entry.Content.Value = reader.Value; } }
internal void AddEntry(AtomEntry entry) { _entries.Add(entry); }
private static void VisitSourceElement(XmlReader reader, AtomEntry entry) { if (reader.IsEmptyElement) return; var source = new AtomFeedBase(); while (reader.Read()) { if (reader.Name.Equals("source") && reader.NodeType == XmlNodeType.EndElement) break; TryReadCommonProperties(reader, source); } entry.AddSource(source); }
private static void VisitEntryElement(XmlReader reader, AtomEntry entry) { if (reader.IsEmptyElement) return; while (reader.Read()) { if (reader.Name.Equals("entry") && reader.NodeType == XmlNodeType.EndElement) break; TryReadCommonProperties(reader, entry); if (reader.NodeType != XmlNodeType.Element) continue; switch (reader.Name) { case "content": VisitContentElement(reader, entry); break; case "published": VisitDateTime(reader, entry, "published", (d, e) => ((AtomEntry)e).AddPublished(d)); break; case "source": VisitSourceElement(reader, entry); break; case "summary": VisitTextConstruct(reader, entry, "summary", (t, e) => ((AtomEntry)e).AddSummary(t)); break; } } }
private static void VisitEntryElement(XmlReader reader, AtomFeed feed) { var entry = new AtomEntry(); VisitEntryElement(reader, entry); feed.AddEntry(entry); }