private ListTemplateUserListsListMetaDataView[] ViewsRegexParse(string metadataSubstring) { var viewsSubstring = Regex.Match(metadataSubstring, "(?<=<Views>).*(?=</Views>)", RegexOptions.Singleline).Value; var viewSubstring = Regex.Matches(viewsSubstring, "(?<=<View ).*(?=</View>)", RegexOptions.Singleline); //initialise required objects List <ListTemplateUserListsListMetaDataView> Views = new List <ListTemplateUserListsListMetaDataView>(); ListTemplateUserListsListMetaDataView view = new ListTemplateUserListsListMetaDataView { Items = new ListTemplateUserListsListMetaDataViewViewFields[0], }; var viewItems = new List <ListTemplateUserListsListMetaDataViewViewFields>(); foreach (Match match in viewSubstring) { var viewitem = new ListTemplateUserListsListMetaDataViewViewFields(); var viewName = Regex.Match(match.Value, "(?<=DisplayName=\").?([^\"]*)").Value; // narrow down to our view fields. var viewFields = Regex.Match(match.Value, "(?<=<ViewFields>).*(?=</ViewFields>)", RegexOptions.Singleline).Value; // get our fieldRefs var fieldRefGroups = Regex.Matches(viewFields, "<FieldRef\\b.*[>]", RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace); var fieldRefList = new List <ListTemplateUserListsListMetaDataViewViewFieldsFieldRef>(); foreach (Match field in fieldRefGroups) { var fieldRef = new ListTemplateUserListsListMetaDataViewViewFieldsFieldRef { Name = field.Value }; fieldRefList.Add(fieldRef); } viewitem.FieldRef = fieldRefList.ToArray(); viewItems.Add(viewitem); view.Items = viewItems.ToArray(); view.DisplayName = viewName; Views.Add(view); } return(Views.ToArray()); }
private ListTemplateUserListsListMetaDataView[] ViewsNodeParse(XmlDocument doc) { try { // lets try and get the field nodes: XmlNodeList viewNodes = doc.SelectNodes(@"/ListTemplate/UserLists/List/MetaData/Views/View"); List <ListTemplateUserListsListMetaDataView> views = new List <ListTemplateUserListsListMetaDataView>(); foreach (XmlNode node in viewNodes) { if (node.Name == "View") { var childNode = node.SelectNodes(@"ViewFields"); var fieldNodes = childNode[0].SelectNodes(@"FieldRef"); var fieldRefList = new List <ListTemplateUserListsListMetaDataViewViewFieldsFieldRef>(); foreach (XmlNode field in fieldNodes) { var fieldRef = new ListTemplateUserListsListMetaDataViewViewFieldsFieldRef { Name = field.Attributes["Name"].Value }; fieldRefList.Add(fieldRef); } views.Add(new ListTemplateUserListsListMetaDataView() { Name = node.Attributes["Name"].Value, DisplayName = node.Attributes["DisplayName"].Value, Type = node.Attributes["Type"].Value, Items = fieldRefList.ToArray() }); } } return(views.ToArray()); } catch { return(null); } }