private void GoToSearchResult(object sender, SearchResult searchResult)
 {
     try
     {
         if(!searchResult.LineNumber.HasValue)
         {
             return;
         }
         if(!searchResult.LinePosition.HasValue)
         {
             return;
         }
         var dte = (DTE)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE));
         var textSelection = (TextSelection)(dte?.ActiveDocument?.Selection);
         var lineNumber = searchResult.LineNumber.Value;
         var selectionStart = searchResult.LinePosition.Value;
         textSelection?.MoveTo(lineNumber, selectionStart, false);
         if(searchResult.SelectionLength.HasValue)
         {
             var selectionEnd = selectionStart + searchResult.SelectionLength.Value;
             textSelection?.MoveToLineAndOffset(lineNumber, selectionEnd, true);
         }
     }
     catch(Exception)
     {
         MessageBox.Show(PackageResources.XPathWorkbenchNavigationErrorText, PackageResources.XPathWorkbenchNavigationErrorTitle, MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
 private void SetLineInfo(IXmlLineInfo lineInfo, SearchResult searchResult)
 {
     if(lineInfo.HasLineInfo())
     {
         searchResult.LineNumber = lineInfo.LineNumber;
         searchResult.LinePosition = lineInfo.LinePosition;
     }
 }
 private SearchResult TryParseElementSearchResult(XElement element)
 {
     if(element == null)
     {
         return null;
     }
     var searchResult = new SearchResult {Value = element.ToString(SaveOptions.DisableFormatting), SelectionLength = element.Name.LocalName.Length};
     SetLineInfo(element, searchResult);
     return searchResult;
 }
 private SearchResult TryParseAttributeSearchResult(XAttribute attribute)
 {
     if(attribute == null)
     {
         return null;
     }
     var searchResult = new SearchResult {Value = attribute.ToString(), SelectionLength = attribute.Name.LocalName.Length};
     SetLineInfo(attribute, searchResult);
     return searchResult;
 }