protected override void ParseConfiguration(XPathNavigator configurationElement, IXmlNamespaceResolver xmlNamespaceResolver, ContentType contentType) { //...xmlns="http://schemas.sensenet.com/SenseNet/ContentRepository/SearchExpression" //.... //<Configuration> // <AllowMultiple>true<AllowMultiple> // <AllowedTypes> // <Type>Folder</Type> // <Type>File</Type> // </AllowedTypes> // <SelectionRoot> // <Path>/Root/.../1</Path> // <Path>/Root/.../2</Path> // <SelectionRoot> // <Query> // <q:And> // <q:String op="StartsWith" property="Path">.</q:String> // <q:String op="NotEqual" property="Name">Restricted</q:String> // </q:And> // </Query> //</Configuration> foreach (XPathNavigator element in configurationElement.SelectChildren(XPathNodeType.Element)) { switch (element.LocalName) { case AllowMultipleName: _allowMultiple = element.InnerXml == "true"; break; case AllowedTypesName: _allowedTypes = new List <string>(); foreach (XPathNavigator typeElement in element.SelectChildren(TypeName, element.NamespaceURI)) { string typeName = typeElement.InnerXml; _allowedTypes.Add(typeName); } break; case SelectionRootName: _selectionRoots = new List <string>(); foreach (XPathNavigator pathElement in element.SelectChildren(PathName, element.NamespaceURI)) { string path = pathElement.InnerXml; if (path != ".") { try { RepositoryPath.CheckValidPath(path); } catch (InvalidPathException e) //rethrow { throw new InvalidPathException(String.Concat("Given path is invalid in SelectionRoot element. ContentType: ", contentType.Name, ", Field name: '", this.Name, "', path: '", path, "'. Reason: ", e.Message)); } } _selectionRoots.Add(path); } break; case QueryName: var sb = new StringBuilder(); sb.Append("<SearchExpression xmlns=\"").Append(NodeQuery.XmlNamespace).Append("\">"); sb.Append(element.InnerXml); sb.Append("</SearchExpression>"); _query = NodeQuery.Parse(sb.ToString()); break; case FieldNameName: _fieldName = element.InnerXml; break; } } }