コード例 #1
0
        /*
         * public string GetATOMSearchResults(string searchTerm, int skip, int take)
         * {
         *  string retVal = string.Empty;
         *
         *  string url = String.Format(Settings.Default.SP2013RestUrl, HttpUtility.UrlEncode(searchTerm), Settings.Default.SP2013Properties);
         *
         *  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
         *  request.UseDefaultCredentials = true;
         *  request.Method = "GET";
         *  request.Accept = "application/atom+xml";
         *  request.ContentType = "application/atom+xml;type=entry";
         *  HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         *  // process response..
         *  XDocument oDataXML = XDocument.Load(response.GetResponseStream(), LoadOptions.None);
         *  XNamespace atom = "http://www.w3.org/2005/Atom";
         *  XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
         *  XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
         *  List<XElement> items = oDataXML.Descendants(d + "query")
         *      .Elements(d + "PrimaryQueryResult")
         *      .Elements(d + "RelevantResults")
         *      .Elements(d + "Table")
         *      .Elements(d + "Rows")
         *      .Elements(d + "element")
         *      .ToList();
         *
         *  return retVal;
         * }
         */
        public XmlDocument GetSearchResultsXML(String searchTerm, int skip, int take)
        {
            //SPQueryService.QueryService
            XmlDocument retDoc;

            using (var svc = new SPQueryService.QueryService())
            {
                svc.UseDefaultCredentials = true;

                // get the query xml
                var queryXml = new StringBuilder();

                var queryDoc = new XmlDocument();
                // TODO: Move the XML to resource ?
                queryDoc.Load(XmlReader.Create(HttpContext.Current.Server.MapPath("~/Content/xml/SearchQuery.xml")));

                queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take);

                var resp = svc.Query(queryXml.ToString());

                // load the xml document
                retDoc = new XmlDocument();
                retDoc.LoadXml(resp);

                // we need to add the number of records we expect to see in a row to the xml
                // get the range node
                var mgr = new XmlNamespaceManager(retDoc.NameTable);
                mgr.AddNamespace("resp", "urn:Microsoft.Search.Response");

                var rangeNode  = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Range", mgr);
                var statusNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Status", mgr);

                if (rangeNode == null)
                {
                    if ((statusNode != null) && (statusNode.InnerText.ToLower().Contains("error")))
                    {
                        // do nothing this can be because there are no results in the search
                    }
                    else
                    {
                        throw new Exception("There was an error getting search results from SharePoint");
                    }
                }
                else
                {
                    var takeNode = retDoc.CreateElement("Take", "urn:Microsoft.Search.Response");
                    takeNode.InnerText = take.ToString(CultureInfo.InvariantCulture);
                    rangeNode.AppendChild(takeNode);
                }
            }
            return(retDoc);
        }
コード例 #2
0
        public string GetSearchResultsString(String searchTerm, int skip, int take)
        {
            string retVal;

            using (var svc = new SPQueryService.QueryService())
            {
                svc.UseDefaultCredentials = true;

                // get the query xml
                var queryXml = new StringBuilder();

                var queryDoc = new XmlDocument();
                queryDoc.Load(XmlReader.Create(@"/Content/xml/SearchQuery.xml"));

                queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take);

                // now execute the query
                retVal = svc.Query(queryXml.ToString());
            }

            return(retVal);
        }
コード例 #3
0
        public string GetSearchResultsString(String searchTerm, int skip, int take)
        {
            string retVal;

            using (var svc = new SPQueryService.QueryService())
            {
                svc.UseDefaultCredentials = true;

                // get the query xml
                var queryXml = new StringBuilder();

                var queryDoc = new XmlDocument();
                queryDoc.Load(XmlReader.Create(@"/Content/xml/SearchQuery.xml"));

                queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take);

                // now execute the query
                retVal = svc.Query(queryXml.ToString());

            }

            return retVal;
        }
コード例 #4
0
        /*
        public string GetATOMSearchResults(string searchTerm, int skip, int take)
        {
            string retVal = string.Empty;

            string url = String.Format(Settings.Default.SP2013RestUrl, HttpUtility.UrlEncode(searchTerm), Settings.Default.SP2013Properties);

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.UseDefaultCredentials = true;
            request.Method = "GET";
            request.Accept = "application/atom+xml";
            request.ContentType = "application/atom+xml;type=entry";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            // process response..            
            XDocument oDataXML = XDocument.Load(response.GetResponseStream(), LoadOptions.None);
            XNamespace atom = "http://www.w3.org/2005/Atom";
            XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
            XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
            List<XElement> items = oDataXML.Descendants(d + "query")
                .Elements(d + "PrimaryQueryResult")
                .Elements(d + "RelevantResults")
                .Elements(d + "Table")
                .Elements(d + "Rows")
                .Elements(d + "element")
                .ToList();      

            return retVal;
        }
        */
        public XmlDocument GetSearchResultsXML(String searchTerm, int skip, int take)
        {
            //SPQueryService.QueryService
            XmlDocument retDoc;
            using (var svc = new SPQueryService.QueryService())
            {
                svc.UseDefaultCredentials = true;

                // get the query xml
                var queryXml = new StringBuilder();

                var queryDoc = new XmlDocument();
                // TODO: Move the XML to resource ?
                queryDoc.Load(XmlReader.Create(HttpContext.Current.Server.MapPath("~/Content/xml/SearchQuery.xml")));

                queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take);

                var resp = svc.Query(queryXml.ToString());

                // load the xml document
                retDoc = new XmlDocument();
                retDoc.LoadXml(resp);

                // we need to add the number of records we expect to see in a row to the xml
                // get the range node
                var mgr = new XmlNamespaceManager(retDoc.NameTable);
                mgr.AddNamespace("resp", "urn:Microsoft.Search.Response");

                var rangeNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Range", mgr);
                var statusNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Status", mgr);

                if (rangeNode == null)
                {
                    if ((statusNode != null) && (statusNode.InnerText.ToLower().Contains("error")))
                    {
                        // do nothing this can be because there are no results in the search
                    }
                    else
                    {
                        throw new Exception("There was an error getting search results from SharePoint");
                    }
                }
                else
                {
                    var takeNode = retDoc.CreateElement("Take", "urn:Microsoft.Search.Response");
                    takeNode.InnerText = take.ToString(CultureInfo.InvariantCulture);
                    rangeNode.AppendChild(takeNode);
                }
            }
            return retDoc;
        }