public XPath_Bracket(XPathString path) { string text = path.Format; XPath = path.Text.TrimStart('[').TrimEnd(']'); text = text.TrimStart('[').TrimEnd(']'); AndOr = text.Contains(" and "); // need new XPathString() that has brackets removed. XPathString[] paths = new XPathString(true, text, path.Values) .Split(new string[] { " and ", " or " }, StringSplitOptions.RemoveEmptyEntries, true); Parts = paths.Select(s => new XPath_Part(s)).ToArray(); }