public override int Read() { // Read each character, skipping over characters that XML has prohibited int nextCharacter; do { // Read a character if ((nextCharacter = base.Read()) == EOF) { // If the character denotes the end of the file, stop reading break; } } // Skip the character if it's prohibited, and try the next while (!XmlSanitizingStream.IsLegalXmlChar(nextCharacter)); return(nextCharacter); }
public override int Peek() { // Return the next legl XML character without reading it int nextCharacter; do { // See what the next character is nextCharacter = base.Peek(); }while ( // If it's prohibited XML, skip over the character in the stream // and try the next. !XmlSanitizingStream.IsLegalXmlChar(nextCharacter) && (nextCharacter = base.Read()) != EOF ); return(nextCharacter); } // method
SyndicationFeed LoadRSS10(string url) { HttpWebRequest webReq = WebRequest.Create(url) as HttpWebRequest; webReq.Timeout = ( int )TimeSpan.FromSeconds(5).TotalMilliseconds; webReq.ReadWriteTimeout = (int)TimeSpan.FromSeconds(5).TotalMilliseconds; using (var resp = webReq.GetResponse()) using (var reader = new XmlSanitizingStream(resp.GetResponseStream())) using (var xmlReader = XmlReader.Create(reader)) { XmlDocument doc = new XmlDocument(); doc.Load(xmlReader); List <SyndicationItem> feedItems = new List <SyndicationItem>(); SyndicationFeed feed = new SyndicationFeed(); feed.Items = feedItems; XmlNamespaceManager nsManager = new XmlNamespaceManager(doc.NameTable); nsManager.AddNamespace("rss", "http://purl.org/rss/1.0/"); feed.Title = new TextSyndicationContent(doc.SelectSingleNode("//rss:channel/rss:title/text()", nsManager).Value); foreach (XmlNode node in doc.SelectNodes("//rss:item", nsManager)) { var item = new SyndicationItem(); item.Title = new TextSyndicationContent(node.SelectSingleNode("./rss:title/text()", nsManager).Value); item.PublishDate = DateTimeOffset.Parse(node.SelectSingleNode("./rss:pubDate/text()", nsManager).Value); item.Links.Add(new SyndicationLink(new Uri(node.SelectSingleNode("./rss:link/text()", nsManager).Value))); feedItems.Add(item); } return(feed); } }
SyndicationFeed LoadRSS10( string url ) { HttpWebRequest webReq = WebRequest.Create( url ) as HttpWebRequest; webReq.Timeout = ( int )TimeSpan.FromSeconds( 5 ).TotalMilliseconds; webReq.ReadWriteTimeout = (int)TimeSpan.FromSeconds( 5 ).TotalMilliseconds; using ( var resp = webReq.GetResponse() ) using ( var reader = new XmlSanitizingStream( resp.GetResponseStream() ) ) using ( var xmlReader = XmlReader.Create( reader ) ) { XmlDocument doc = new XmlDocument(); doc.Load( xmlReader ); List<SyndicationItem> feedItems = new List<SyndicationItem>(); SyndicationFeed feed = new SyndicationFeed(); feed.Items = feedItems; XmlNamespaceManager nsManager = new XmlNamespaceManager( doc.NameTable ); nsManager.AddNamespace( "rss", "http://purl.org/rss/1.0/" ); feed.Title = new TextSyndicationContent( doc.SelectSingleNode( "//rss:channel/rss:title/text()", nsManager ).Value ); foreach ( XmlNode node in doc.SelectNodes( "//rss:item", nsManager ) ) { var item = new SyndicationItem(); item.Title = new TextSyndicationContent( node.SelectSingleNode( "./rss:title/text()", nsManager ).Value ); item.PublishDate = DateTimeOffset.Parse( node.SelectSingleNode( "./rss:pubDate/text()", nsManager ).Value ); item.Links.Add( new SyndicationLink( new Uri( node.SelectSingleNode( "./rss:link/text()", nsManager ).Value ) ) ); feedItems.Add( item ); } return feed; } }
/// <summary> /// Get whether an integer represents a legal XML 1.0 character. See the /// specification at w3.org for these characters. /// </summary> public static bool IsLegalXmlChar(int character) { return(XmlSanitizingStream.IsLegalXmlChar("1.0", character)); }