SelectNodesNS() public method

public SelectNodesNS ( [ xpath, [ namespaces ) : XmlNodeList
xpath [
namespaces [
return XmlNodeList
Exemplo n.º 1
0
        private void ParseFeedDoc(XmlDocument xmlDoc, Uri baseUri, bool includeTitle, ref string homepageUrl, ref string title)
        {
            if (includeTitle)
            {
                XmlElement titleEl = xmlDoc.SelectSingleNodeNS(@"atom:feed/atom:title", _nsMgr.ToNSMethodFormat()) as XmlElement;
                if (titleEl != null)
                {
                    title = _atomVer.TextNodeToPlaintext(titleEl);
                }
            }

            foreach (XmlElement linkEl in xmlDoc.SelectNodesNS(@"atom:feed/atom:link[@rel='alternate']", _nsMgr.ToNSMethodFormat()))
            {
                IDictionary contentTypeInfo = MimeHelper.ParseContentType(linkEl.GetAttribute("type"), true);
                switch (contentTypeInfo[""] as string)
                {
                case "text/html":
                case "application/xhtml+xml":
                    homepageUrl = XmlHelper.GetUrl(linkEl, "@href", baseUri);
                    return;
                }
            }
        }
Exemplo n.º 2
0
        protected async Task <BlogInfo[]> GetUsersBlogsInternal()
        {
            XmlRestRequestHelper.XmlRequestResult xmlResult = new XmlRestRequestHelper.XmlRequestResult();
            xmlResult.uri = FeedServiceUrl;
            XmlDocument xmlDoc = await xmlRestRequestHelper.Get(RequestFilter, xmlResult);

            // Either the FeedServiceUrl points to a service document OR a feed.

            if (xmlDoc.SelectSingleNodeNS("/app:service", _nsMgr.ToNSMethodFormat()) != null)
            {
                ArrayList blogInfos = new ArrayList();
                foreach (XmlElement coll in xmlDoc.SelectNodesNS("/app:service/app:workspace/app:collection", _nsMgr.ToNSMethodFormat()))
                {
                    bool promote = ShouldPromote(coll);

                    // does this collection accept entries?
                    XmlNodeList acceptNodes    = coll.SelectNodesNS("app:accept", _nsMgr.ToNSMethodFormat());
                    bool        acceptsEntries = false;
                    if (acceptNodes.Count == 0)
                    {
                        acceptsEntries = true;
                    }
                    else
                    {
                        foreach (XmlElement acceptNode in acceptNodes)
                        {
                            if (AcceptsEntry(acceptNode.InnerText))
                            {
                                acceptsEntries = true;
                                break;
                            }
                        }
                    }

                    if (acceptsEntries)
                    {
                        string feedUrl = XmlHelper.GetUrl(coll, "@href", xmlResult.uri);
                        if (feedUrl == null || feedUrl.Length == 0)
                        {
                            continue;
                        }

                        // form title
                        StringBuilder titleBuilder = new StringBuilder();
                        foreach (XmlElement titleContainerNode in new XmlElement[] { coll.ParentNode as XmlElement, coll })
                        {
                            Debug.Assert(titleContainerNode != null);
                            if (titleContainerNode != null)
                            {
                                XmlElement titleNode = titleContainerNode.SelectSingleNodeNS("atom:title", _nsMgr.ToNSMethodFormat()) as XmlElement;
                                if (titleNode != null)
                                {
                                    string titlePart = _atomVer.TextNodeToPlaintext(titleNode);
                                    if (titlePart.Length != 0)
                                    {
                                        //Res.LOCME("loc the separator between parts of the blog name");
                                        if (titleBuilder.Length != 0)
                                        {
                                            titleBuilder.Append(" - ");
                                        }
                                        titleBuilder.Append(titlePart);
                                    }
                                }
                            }
                        }

                        // get homepage URL
                        string homepageUrl = "";
                        string dummy       = "";


                        XmlRestRequestHelper.XmlRequestResult xmlResult2 = new XmlRestRequestHelper.XmlRequestResult();
                        xmlResult2.uri = new Uri(feedUrl);
                        XmlDocument feedDoc = await xmlRestRequestHelper.Get(RequestFilter, xmlResult2);

                        ParseFeedDoc(feedDoc, xmlResult2.uri, false, ref homepageUrl, ref dummy);

                        // TODO: Sniff out the homepage URL
                        BlogInfo blogInfo = new BlogInfo(feedUrl, titleBuilder.ToString().Trim(), homepageUrl);
                        if (promote)
                        {
                            blogInfos.Insert(0, blogInfo);
                        }
                        else
                        {
                            blogInfos.Add(blogInfo);
                        }
                    }
                }

                return((BlogInfo[])blogInfos.ToArray(typeof(BlogInfo)));
            }
            else
            {
                string title       = string.Empty;
                string homepageUrl = string.Empty;

                ParseFeedDoc(xmlDoc, xmlResult.uri, true, ref homepageUrl, ref title);

                return(new BlogInfo[] { new BlogInfo(UrlHelper.SafeToAbsoluteUri(FeedServiceUrl), title, homepageUrl) });
            }
        }
Exemplo n.º 3
0
        internal async Task<IList<Camera>> probeTask()
        { 
            var cameras = new List<Camera>();
            var cameraAddressMap = new Dictionary<string, Camera>();

            listener.MessageReceived +=  (DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) =>
            {
                try
                {
                    var reader = args.GetDataReader();
                    var bytesRemaining = reader.UnconsumedBufferLength;
                    var receivedString = reader.ReadString(bytesRemaining);

                    var soapEnvelope = new XmlDocument();
                    soapEnvelope.LoadXml(receivedString);

                    //var probeMatches = soapEnvelope.GetElementsByTagName("wsdd:ProbeMatch");
                    var probeMatches = soapEnvelope.SelectNodesNS("//wsdd:ProbeMatch", "xmlns:wsdd='http://schemas.xmlsoap.org/ws/2005/04/discovery'");
                    foreach (var probeMatch in probeMatches)
                    {
                        Debug.WriteLine(probeMatch.GetXml());
                        var endpointAddressNode = probeMatch.SelectSingleNodeNS("wsa:EndpointReference/wsa:Address", "xmlns:wsdd='http://schemas.xmlsoap.org/ws/2005/04/discovery' xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing'");

                        var xAddressNode = probeMatch.SelectSingleNodeNS("wsdd:XAddrs", "xmlns:wsdd='http://schemas.xmlsoap.org/ws/2005/04/discovery' xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing'");

                        var cameraAddress = endpointAddressNode.InnerText;
                        var cameraUri = xAddressNode.InnerText;

                        if (!cameraAddressMap.ContainsKey(cameraAddress))
                        {
                            var uri = new Uri(cameraUri);
                            var cameraInstance = new Camera(cameraAddress, uri);
                            cameras.Add(cameraInstance);
                            cameraAddressMap.Add(cameraAddress, cameraInstance);
                        }
                    }
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message + "\n" + e.StackTrace);
                }
            };

            await listener.BindEndpointAsync(null, string.Empty);
            var ssdp = new Windows.Networking.HostName("239.255.255.250");
            listener.JoinMulticastGroup(ssdp);


            using (var stream = await listener.GetOutputStreamAsync(ssdp, "3702"))
            {
                using (var writer = new DataWriter(stream))
                {
                    string req = GetRequestString();

                    writer.WriteString(req);
                    await writer.StoreAsync();

                    await Task.Delay(5000);
                }
            }

            return cameras;
        }