public static void Snippet13() { // <Snippet13> Atom10ItemFormatter itemFormatter = new Atom10ItemFormatter(); XmlReader atomReader = XmlReader.Create("http://Contoso/Feeds/MyFeed/Item"); if (itemFormatter.CanRead(atomReader)) { itemFormatter.ReadFrom(atomReader); atomReader.Close(); } // </Snippet13> }
/// <summary> /// Creates the atom entry document. /// </summary> /// <param name="atomXmlReader">The atom XML reader.</param> private void CreateAtomEntryDocument(XmlReader atomXmlReader) { Atom10ItemFormatter formatter = new Atom10ItemFormatter(); bool isValidAtomEntry = formatter.CanRead(atomXmlReader); if (isValidAtomEntry) { AtomDocument = SyndicationItem.Load(atomXmlReader); bool isValidAtomPubEntry = null != AtomDocument.Id && DateTimeOffset.MinValue != AtomDocument.LastUpdatedTime && null != AtomDocument.Title && null != AtomDocument.Authors && 0 < AtomDocument.Authors.Count; if (isValidAtomPubEntry) { if (null == AtomDocument.Content) { isValidAtomPubEntry = AtomDocument.Links.Where(atomLink => string.Compare(atomLink.RelationshipType, "alternate", StringComparison.OrdinalIgnoreCase) == 0) .Count() == 1; } else if (!(AtomDocument.Content is TextSyndicationContent)) { isValidAtomPubEntry = null != AtomDocument.Summary; } } if (!isValidAtomPubEntry) { throw new ArgumentException(Resources.ATOMPUB_INVALID_ATOMENTRYDOCUMENT, "atomXmlReader"); } else { SetProperties(); } } else { throw new ArgumentException(Resources.ATOMPUB_INVALID_ATOMENTRYDOCUMENT, "atomXmlReader"); } }
public void CanRead() { Atom10ItemFormatter f = new Atom10ItemFormatter(); Assert.IsFalse(f.CanRead(CreateReader("<feed xmlns='http://www.w3.org/2005/Atom'>")), "#1"); Assert.IsTrue(f.CanRead(CreateReader("<entry xmlns='http://www.w3.org/2005/Atom'>")), "#2"); Assert.IsFalse(f.CanRead(CreateReader("<entry>")), "#3"); Assert.IsFalse(f.CanRead(CreateReader("<item>")), "#4"); Assert.IsFalse(f.CanRead(CreateReader("<hoge xmlns='http://www.w3.org/2005/Atom'>")), "#5"); XmlReader r = CreateReader("<entry xmlns='http://www.w3.org/2005/Atom'></entry>"); r.Read(); // element r.Read(); // endelement Assert.IsFalse(f.CanRead(r), "#6"); r = CreateReader("<entry xmlns='http://www.w3.org/2005/Atom'><title>test</title></entry>"); r.Read(); // item r.Read(); // title Assert.IsFalse(f.CanRead(r), "#7"); }