public IList <SearchResult> Search(string xpath) { if (string.IsNullOrWhiteSpace(xpath)) { return(new SearchResult[0]); } var rootElement = _repository.GetRootElement(); if (rootElement == null) { return(new SearchResult[0]); } try { var namespaceResolver = new SimpleXmlNamespaceResolver(rootElement.Document); var matches = rootElement.Document?.XPathEvaluate(xpath, namespaceResolver); var searchResults = _searchResultFactory.Parse(matches); return(searchResults); } catch (Exception ex) { throw new InvalidOperationException(PackageResources.XPathEvaluationErrorText, ex); } }
public void NamespacePrefixesAreParsedCorrectly(string xml, string[] expectedNamespaces) { // Arrange var document = XDocument.Parse(xml); // Act var manager = new SimpleXmlNamespaceResolver(document); var namespaces = manager.GetNamespacesInScope(XmlNamespaceScope.All).Values; // Assert Assert.That(namespaces, Is.EquivalentTo(expectedNamespaces)); }