if (!reader.IsEmptyElement) {
reader.Read ();
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
- if (reader.NodeType == XmlNodeType.Text)
+ if (reader.IsTextNode ())
category.Name += reader.Value;
else if (!TryParseElement (reader, category, Version)) {
if (PreserveElementExtensions)
string url = null;
reader.Read ();
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
- if (reader.NodeType == XmlNodeType.Text)
+ if (reader.IsTextNode ())
url += reader.Value;
else if (!TryParseElement (reader, link, Version)) {
if (PreserveElementExtensions)
if (!reader.IsEmptyElement) {
reader.Read ();
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
- if (reader.NodeType == XmlNodeType.Text)
+ if (reader.IsTextNode ())
person.Email += reader.Value;
else if (!TryParseElement (reader, person, Version)) {
if (PreserveElementExtensions)
using System.Collections.ObjectModel;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Xml;
namespace System.ServiceModel.Syndication
{
+ static class XmlReaderExtensions
+ {
+ public static bool IsTextNode (this XmlReader r)
+ {
+ switch (r.NodeType) {
+ case XmlNodeType.Text:
+ case XmlNodeType.CDATA:
+ case XmlNodeType.Whitespace:
+ case XmlNodeType.SignificantWhitespace:
+ return true;
+ }
+ return false;
+ }
+ }
+
[XmlRoot ("item", Namespace = "")]
public class Rss20ItemFormatter : SyndicationItemFormatter, IXmlSerializable
{
if (!reader.IsEmptyElement) {
reader.Read ();
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
- if (reader.NodeType == XmlNodeType.Text)
+ if (reader.IsTextNode ())
category.Name += reader.Value;
else if (!TryParseElement (reader, category, Version)) {
if (PreserveElementExtensions)
else
reader.Skip ();
}
+ reader.Read ();
}
}
reader.Read (); // </category> or <category ... />
string url = null;
reader.Read ();
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
- if (reader.NodeType == XmlNodeType.Text)
+ if (reader.IsTextNode ())
url += reader.Value;
else if (!TryParseElement (reader, link, Version)) {
if (PreserveElementExtensions)
if (!reader.IsEmptyElement) {
reader.Read ();
for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) {
- if (reader.NodeType == XmlNodeType.Text)
+ if (reader.IsTextNode ())
person.Email += reader.Value;
else if (!TryParseElement (reader, person, Version)) {
if (PreserveElementExtensions)
else
reader.Skip ();
}
+ reader.Read ();
}
}
reader.Read (); // end element or empty element
if (!reader.IsEmptyElement) {
reader.Read ();
string title = null;
- while (reader.NodeType != XmlNodeType.EndElement)
- if (reader.NodeType == XmlNodeType.Text)
+ while (reader.NodeType != XmlNodeType.EndElement) {
+ if (reader.IsTextNode ())
title += reader.Value;
+ reader.Skip ();
+ reader.MoveToContent ();
+ }
feed.Title = new TextSyndicationContent (title);
}
reader.Read (); // </source> or <source ... />