private bool ReadNextBookmark () { while (reader.NodeType == XmlNodeType.EndElement) { if (reader.Name == "folder") { folder_stack.RemoveAt (folder_stack.Count - 1); ResetCurrentFolder (); //Log.Debug ("Resetting folder to [{0}]", current_folder); } reader.Read (); } while (!reader.EOF && reader.NodeType == XmlNodeType.Element) { string elementname = reader.Name; if (elementname == "title") { string title = reader.ReadString (); current_folder_title = title; folder_stack.Add (title); ResetCurrentFolder (); reader.ReadEndElement (); continue; } else if (elementname == "bookmark") { string bookmark_string = reader.ReadOuterXml (); current_bookmark = (Bookmark) serializer.Deserialize (new StringReader (bookmark_string)); if (SetLastModifiedTable ()) return true; } else { reader.Read (); } } return false; }
public bool HasNextIndexable () { if (!is_valid_file || reader == null) return false; current_bookmark = null; string bookmark_string = ""; try { while (! reader.EOF) { if (ReadNextBookmark ()) return true; } } catch (XmlException) { // probably no more <item> } is_valid_file = false; reader.Close (); if (! initial_scan) queryable.RemoveDeletedBookmarks (deleted_bookmarks); return false; }