示例#1
0
        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;
        }
示例#2
0
        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;
            }
        }
示例#3
0
 internal void AddEntry(AtomEntry entry)
 {
     _entries.Add(entry);
 }
示例#4
0
        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);
        }
示例#5
0
        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;
                }
            }
        }
示例#6
0
 private static void VisitEntryElement(XmlReader reader, AtomFeed feed)
 {
     var entry = new AtomEntry();
     VisitEntryElement(reader, entry);
     feed.AddEntry(entry);
 }