public static void ReadList (XmlReader reader, ICollection<string> endNodes, ReaderCallbackWithData callback) { if (reader.IsEmptyElement) return; ReadCallbackData data = new ReadCallbackData (); bool didReadStartNode = false; while (reader.Read()) { skip: data.SkipNextRead = false; switch (reader.NodeType) { case XmlNodeType.EndElement: if (endNodes.Contains (reader.LocalName)) return; Console.WriteLine ("Unknown end node: " + reader.LocalName + " valid end nodes are: " + ConcatString (endNodes)); break; case XmlNodeType.Element: if (!didReadStartNode && endNodes.Contains (reader.LocalName)) { didReadStartNode = true; // break; } bool validNode = callback (data); if (!validNode) Console.WriteLine ("Unknown node: " + reader.LocalName); if (data.SkipNextRead) goto skip; break; } } }
public static void ReadList (XmlReader reader, ICollection<string> endNodes, ReaderCallbackWithData callback) { if (reader.IsEmptyElement) return; ReadCallbackData data = new ReadCallbackData (); bool didReadStartNode = endNodes.Contains (reader.LocalName); while (data.SkipNextRead || reader.Read()) { data.SkipNextRead = false; switch (reader.NodeType) { case XmlNodeType.EndElement: if (endNodes.Contains (reader.LocalName)) return; IXmlLineInfo xmlInfo = (IXmlLineInfo)reader; LoggingService.LogWarning ( "Encountered end node '{0}' when expecting one of '{1}'. Location ln:{2} col: {3}. Stack Trace:{4}", reader.LocalName, ConcatString (endNodes), xmlInfo.LineNumber, xmlInfo.LinePosition, new System.Diagnostics.StackTrace ()); break; case XmlNodeType.Element: if (!didReadStartNode && endNodes.Contains (reader.LocalName)) { didReadStartNode = true; break; } bool validNode = callback (data); if (!validNode) LoggingService.LogWarning ("Unknown node: " + reader.LocalName); break; } } }
public static void ReadList(XmlReader reader, ICollection <string> endNodes, ReaderCallbackWithData callback) { if (reader.IsEmptyElement) { return; } ReadCallbackData data = new ReadCallbackData(); bool didReadStartNode = false; while (reader.Read()) { skip: data.SkipNextRead = false; switch (reader.NodeType) { case XmlNodeType.EndElement: if (endNodes.Contains(reader.LocalName)) { return; } Console.WriteLine("Unknown end node: " + reader.LocalName + " valid end nodes are: " + ConcatString(endNodes)); break; case XmlNodeType.Element: if (!didReadStartNode && endNodes.Contains(reader.LocalName)) { didReadStartNode = true; // break; } bool validNode = callback(data); if (!validNode) { Console.WriteLine("Unknown node: " + reader.LocalName); } if (data.SkipNextRead) { goto skip; } break; } } }
public static void ReadList(XmlReader reader, ICollection <string> endNodes, ReaderCallbackWithData callback) { if (reader.IsEmptyElement) { return; } ReadCallbackData data = new ReadCallbackData(); bool didReadStartNode = endNodes.Contains(reader.LocalName); while (data.SkipNextRead || reader.Read()) { data.SkipNextRead = false; switch (reader.NodeType) { case XmlNodeType.EndElement: if (endNodes.Contains(reader.LocalName)) { return; } IXmlLineInfo xmlInfo = (IXmlLineInfo)reader; LoggingService.LogWarning( "Encountered end node '{0}' when expecting one of '{1}'. Location ln:{2} col: {3}. Stack Trace:{4}", reader.LocalName, ConcatString(endNodes), xmlInfo.LineNumber, xmlInfo.LinePosition, new System.Diagnostics.StackTrace()); break; case XmlNodeType.Element: if (!didReadStartNode && endNodes.Contains(reader.LocalName)) { didReadStartNode = true; break; } bool validNode = callback(data); if (!validNode) { LoggingService.LogWarning("Unknown node: " + reader.LocalName); } break; } } }
public static void ReadList(XmlReader reader, string endNode, ReaderCallbackWithData callback) { ReadList(reader, new string[] { endNode }, callback); }
public static void ReadList (XmlReader reader, string endNode, ReaderCallbackWithData callback) { ReadList (reader, new string[] { endNode }, callback); }