SelectNodes() public method

public SelectNodes ( [ xpath ) : XmlNodeList
xpath [
return XmlNodeList
        public static void CompleteTemplate(XmlDocument xml, string[] text, string[] images = null, string sound = null)
        {
            XmlNodeList slots = xml.SelectNodes("descendant-or-self::image");
            int index = 0;

            if ((images != null) && (slots != null))
            {
                while ((index < images.Length) && (index < slots.Length))
                {
                    ((XmlElement)slots[index]).SetAttribute("src", images[index]);
                    index++;
                }
            }

            if (text != null)
            {
                slots = xml.SelectNodes("descendant-or-self::text");
                index = 0;

                while ((slots != null) && ((index < text.Length) && (index < slots.Length)))
                {
                    slots[index].AppendChild(xml.CreateTextNode(text[index]));
                    index++;
                }
            }

            if (!string.IsNullOrEmpty(sound))
            {
                var audioElement = xml.CreateElement("audio");
                audioElement.SetAttribute("src", sound);
                xml.DocumentElement.AppendChild(audioElement);
            }
        }
    public static void CompleteToastOrTileTemplate(XmlDocument xml, string[] text, string[] images)
    {
      XmlNodeList slots = xml.SelectNodes("descendant-or-self::image");
      int index = 0;

      if (images != null)
      {
        while ((index < images.Length) && (index < slots.Length))
        {
          ((XmlElement)slots[index]).SetAttribute("src", images[index]);
          index++;
        }
      }

      if (text != null)
      {
        slots = xml.SelectNodes("descendant-or-self::text");
        index = 0;

        while ((index < text.Length) && (index < slots.Length))
        {
          slots[index].AppendChild(xml.CreateTextNode(text[index]));
          index++;
        }
      }
    }
Beispiel #3
0
 /// <summary>
 /// Get all feed data with a structure according to <see cref="ITMUtils.NewsParsing.NewsStruct" />
 /// </summary>
 /// <returns>All feed data into a <see cref="List{Structure}"/> format</returns>
 public async static Task<ObservableCollection<NewsStruct>> GetFeedData()
 {
     ObservableCollection<NewsStruct> result = new ObservableCollection<NewsStruct>();
     HttpClient client = new HttpClient();
     string xml = await client.GetStringAsync(SourceUrl);
     XmlDocument xdoc = new XmlDocument();
     xdoc.LoadXml(xml);
     XmlNodeList nodes = xdoc.SelectNodes(TitlePath);
     foreach (IXmlNode item in nodes)
     {
         result.Add(new NewsStruct() { Title = item.InnerText });
     }
     Regex rgx = new Regex("src=\".+?\"");
     xdoc.LoadXml(xml);
     nodes = xdoc.SelectNodes(DescriptionPath);
     int count = 0;
     string text = string.Empty;
     foreach (IXmlNode item in nodes)
     {
         text = item.NextSibling.NextSibling.InnerText;
         result[count].ImgSource = rgx.Matches(text)[0].Value.Replace("src=\"", string.Empty).Replace("\"", string.Empty);
         result[count].Content = Regex.Replace(Regex.Replace(text, "<.*?>", string.Empty), "&.*?;", string.Empty);
         result[count].EncodedString = text;
         count++;
     }
     nodes = xdoc.SelectNodes(PublishDatePath);
     count = 0;
     foreach (IXmlNode item in nodes)
     {
         result[count].PublishDate = DateTime.Parse(item.InnerText).ToLocalTime();
         result[count].Author = "Autor: " + item.NextSibling.NextSibling.InnerText;
         count++;
     }
     return result;
 }
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            rootPage = MainPage.Current;
            file = "status.xml";
            StorageFile storageFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(file);
            XmlLoadSettings loadSettings = new XmlLoadSettings();
            loadSettings.ProhibitDtd = false;
            loadSettings.ResolveExternals = false;
            doc = await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);
            try
            {
                var results = doc.SelectNodes("descendant::result");                
                int num_results = 1;
                foreach (var result in results)
                {
                    String id = results[num_results - 1].SelectSingleNode("descendant::id").FirstChild.NodeValue.ToString();
                    String status = results[num_results-1].SelectSingleNode("descendant::status").FirstChild.NodeValue.ToString();
                    listBox.Items.Add("ID: "+id+" "+ status);
                    num_results += 1;
                }
                if (num_results==1)
                    listBox.Items.Add("You don't have pending jobs.");
            }
            
            catch(Exception)
            { 
            listBox.Items.Add("You don't have pending jobs.");
            }

        }
        public async Task<bool> IsInFastFood(GeoCoordinate geo)
        {
            XmlDocument doc = new XmlDocument();

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Add("Accept", "text/xml");

                var squarreSize = 0.0002;
                var url = "http://api.openstreetmap.org/api/0.6/map?bbox=" +
                          (geo.Longitude - squarreSize).ToString("G", CultureInfo.InvariantCulture) + "," +
                          (geo.Latitude - squarreSize).ToString("G", CultureInfo.InvariantCulture) + "," +
                          (geo.Longitude + squarreSize).ToString("G", CultureInfo.InvariantCulture) + "," +
                          (geo.Latitude + squarreSize).ToString("G", CultureInfo.InvariantCulture) + "&page=0";
                var uri = new Uri(url);
                HttpResponseMessage response = await client.GetAsync(uri);
                if (response.IsSuccessStatusCode)
                {
                    var s = await response.Content.ReadAsStringAsync();
                    doc.LoadXml(s);
                    var listNodeTag = doc.SelectNodes("//tag[@k='amenity'][@v='fast_food']");
                   // var listNodeTag = doc.SelectNodes("//tag[@k='bus'][@v='bus']");
                    //var busFound = s.IndexOf("bus") > 0;
                    if (listNodeTag.Count > 0)
                    {
                        return true;
                    }
                }
            }
            return false;
        }
Beispiel #6
0
        /// <summary>
        /// Populates the page with content passed during navigation. Any saved state is also
        /// provided when recreating a page from a prior session.
        /// </summary>
        /// <param name="sender">
        /// The source of the event; typically <see cref="NavigationHelper"/>
        /// </param>
        /// <param name="e">Event data that provides both the navigation parameter passed to
        /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and
        /// a dictionary of state preserved by this page during an earlier
        /// session. The state will be null the first time a page is visited.</param>
        private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
        {
            try
            {
                StorageFile localFile = await ApplicationData.Current.LocalFolder.GetFileAsync("usersettings.xml");
                string localData = await FileIO.ReadTextAsync(localFile);

                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(localData);

                XmlNodeList nodeList = xmlDoc.SelectNodes("Categories/Bill");

                foreach (IXmlNode node in nodeList)
                {
                    string type = node.Attributes[0].NodeValue.ToString();
                    string title = node.Attributes[1].NodeValue.ToString();
                    string subtitle = node.Attributes[2].NodeValue.ToString();
                    string imagePath = node.Attributes[3].NodeValue.ToString();
                    string portalUrl = node.Attributes[4].NodeValue.ToString();

                    string dueDate = node.FirstChild.InnerText;
                    string isPaid = node.LastChild.InnerText;

                    Bill bill = new Bill(title, subtitle, imagePath, portalUrl, BillType.CreditCard, isPaid == "1", Convert.ToDateTime(dueDate));
                    this.Bill.Add(bill);
                }

                this.DataContext = this.Bill;

            }
            catch (FileNotFoundException)
            {
                this.Frame.Navigate(typeof(BillCategories));
            }
        }
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            rootPage = MainPage.Current;
            listBox.Items.Add("Index");
            StorageFile storageFile;
            file = "history.xml";
           
            
                storageFile= await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(file);
                XmlLoadSettings loadSettings = new XmlLoadSettings();
                loadSettings.ProhibitDtd = false;
                loadSettings.ResolveExternals = false;
                doc = await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);
                var results = doc.SelectNodes("descendant::result");
                int num_results = 1;
                foreach (var result in results)
                {
                    listBox.Items.Add(num_results.ToString());
                    num_results += 1;
                }

                if (num_results > 1) //show the first history result
                {
                    listBox.SelectedIndex = 1;
                    select_item(0);
                }
            
          


            //rootPage.NotifyUser(doc.InnerText.ToString(), NotifyType.StatusMessage);

        }
Beispiel #8
0
        private void UpdateBaseUrl()
        {
            //This does not support all scenarios for the BaseUrl element.
            //It will find the first BaseUrl
            //Element in either the MPD element or the Period Element, top down
            //and append it to the base url of the manifest.
            var mpdBaseUrlElement = document.SelectNodes("*").Where(x => x.NodeName == "BaseURL");

            if (mpdBaseUrlElement.Count() != 0)
            {
                string baseUrlText = mpdBaseUrlElement.First().InnerText;
                if (baseUrlText.ToLower().StartsWith("http") || baseUrlText.ToLower().StartsWith("https"))
                {
                    manifest.BaseUrl = baseUrlText;
                }
                else
                {
                    manifest.AppendToBaseUrl(mpdBaseUrlElement.First().InnerText);
                }
                return;
            }
            var periodBaseUrlElement = document.SelectNodes("*").Where(x => x.NodeName == "BaseURL");

            if (periodBaseUrlElement.Count() != 0)
            {
                string baseUrlText = periodBaseUrlElement.First().InnerText;
                if (baseUrlText.ToLower().StartsWith("http") || baseUrlText.ToLower().StartsWith("https"))
                {
                    manifest.BaseUrl = baseUrlText;
                }
                else
                {
                    manifest.AppendToBaseUrl(periodBaseUrlElement.First().InnerText);
                }
                return;
            }
        }
Beispiel #9
0
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        static XmppSerializer()
        {
            var watch = Stopwatch.StartNew();

            var assembly = typeof(XmppSerializer).GetTypeInfo().Assembly;
            var resource = "Conversa.Net.Xmpp.Xml.Serializers.xml";
            var document = new Windows.Data.Xml.Dom.XmlDocument();

            document.LoadXml(ReadResource(assembly, resource));

            var list = document.SelectNodes("/serializers/serializer");

            Serializers = new List <XmppSerializer>();

            foreach (IXmlNode serializer in list)
            {
                var node = serializer.SelectSingleNode("namespace");

                string ename  = serializer.Attributes.Single(a => a.NodeName == "elementname").NodeValue.ToString();
                string prefix = node.SelectSingleNode("prefix").InnerText;
                string nsName = node.SelectSingleNode("namespace").InnerText;
                string tName  = serializer.SelectSingleNode("serializertype").InnerText;
                Type   type   = assembly.ExportedTypes.SingleOrDefault(x => x.FullName == tName);

                Serializers.Add(new XmppSerializer(ename, prefix, nsName, type));
            }

            XmlReaderSettings = new XmlReaderSettings
            {
                ConformanceLevel = ConformanceLevel.Fragment
            };

            XmlWriterSettings = new XmlWriterSettings
            {
                ConformanceLevel     = ConformanceLevel.Auto
                , Encoding           = XmppEncoding.Utf8
                , Indent             = false
                , NamespaceHandling  = NamespaceHandling.Default
                , OmitXmlDeclaration = true
            };

            watch.Stop();

            Debug.WriteLine(String.Format("XmppSerializer static constructor elapsed time: {0}", watch.Elapsed));
        }
        private void ButtonSendNotification_Click(object sender, RoutedEventArgs e)
        {
            string xml = $@"
                <tile version='3'>
                    <visual branding='nameAndLogo'>

                        <binding template='TileMedium'>
                            <text hint-wrap='true'>New tile notification</text>
                            <text hint-wrap='true' hint-style='captionSubtle'/>
                        </binding>

                        <binding template='TileWide'>
                            <text hint-wrap='true'>New tile notification</text>
                            <text hint-wrap='true' hint-style='captionSubtle'/>
                        </binding>

                        <binding template='TileLarge'>
                            <text hint-wrap='true'>New tile notification</text>
                            <text hint-wrap='true' hint-style='captionSubtle'/>
                        </binding>

                </visual>
            </tile>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            string nowTimeString = DateTime.Now.ToString();

            // Assign date/time values through XmlDocument to avoid any xml escaping issues
            foreach (XmlElement textEl in doc.SelectNodes("//text").OfType<XmlElement>())
                if (textEl.InnerText.Length == 0)
                    textEl.InnerText = nowTimeString;

            TileNotification notification = new TileNotification(doc);
            TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);
        }
Beispiel #11
0
        public static bool ReceiptExpired(string receipt)
        {
            var xml = new XmlDocument();
            xml.LoadXml(receipt);

            try
            {
                var xpath = "/Receipt/ProductReceipt/@ExpirationDate";
                var node = xml.SelectNodes(xpath).First();
                var att = node.InnerText;
                var date = DateTimeOffset.Parse(att);
                var remainingMinutea = (date - DateTime.Now).TotalMinutes;

                if (remainingMinutea < 1) return true;

                return false;
            }
            catch
            {
                return true;
            }

        }
Beispiel #12
0
 public static string GetProductReceiptFromAppReceipt(string productId, string appReceipt)
 {
     var xml = new XmlDocument();
     xml.LoadXml(appReceipt);
     try
     {
         var xpath = "/Receipt/ProductReceipt[@ProductId='" + productId + "']";
         var productReceipt = xml.SelectNodes(xpath).First();
         if (productReceipt == null) return "";
         var root = xml.SelectNodes("/Receipt").First();
         while (root.ChildNodes.Last() != productReceipt)
         {
             root.RemoveChild(root.ChildNodes.Last());
         }
         while (root.ChildNodes.First() != productReceipt)
         {
             root.RemoveChild(root.ChildNodes.First());
         }
     }
     catch
     {
         return "";
     }
     
     return xml.GetXml();
 }
Beispiel #13
0
        public static LibrelioLocalUrl FindInMetadata(LibrelioUrl url, XmlDocument xml)
        {
            if (xml == null) return null;

            string xpath = "/root/mag[url='" + url.AbsoluteUrl + "']";
            var nodes = xml.SelectNodes(xpath);

            if (nodes.Count > 0)
            {
                var index = Convert.ToInt32(nodes[0].SelectNodes("index")[0].InnerText);
                var title = nodes[0].SelectNodes("title")[0].InnerText;
                var subtitle = nodes[0].SelectNodes("subtitle")[0].InnerText;
                var path = nodes[0].SelectNodes("path")[0].InnerText;
                if (path != "ND")
                {
                    var pos = path.LastIndexOf('\\');
                    path = path.Substring(0, pos + 1);
                }
                var metadata = nodes[0].SelectNodes("metadata")[0].InnerText;
                if (metadata != "ND")
                {
                    var pos = metadata.LastIndexOf('\\');
                    metadata = metadata.Substring(pos + 1);
                }
                var u = nodes[0].SelectNodes("url")[0].InnerText;
                var rel = nodes[0].SelectNodes("relPath")[0].InnerText;
                var isd = nodes[0].SelectNodes("sampledownloaded")[0].InnerText;

                return new LibrelioLocalUrl(index, title, subtitle, path, GetFullNameFromUrl(rel), u, rel, isd.Equals("true"));
            }
            else
            {
                return null;
            }
        }
Beispiel #14
0
        private async Task ReadPList(XmlDocument plist)
        {
            _magazinesUrl.Clear();

            var items = plist.SelectNodes("/plist/array/dict");
            for (int i = 0; i < items.Count; i++)
            {
                var dict = items[i];
                LibrelioUrl url = null;
                string tite = "";
                string subtitle = "";

                foreach (var key in dict.SelectNodes("key"))
                {
                    if (key.InnerText == "FileName")
                    {
                        var relUrl = GetValue(key);

                        if (relUrl != "")
                            url = new LibrelioUrl(i, this._path, relUrl);
                    }
                    else if (key.InnerText == "Title")
                    {
                        tite = GetValue(key);
                    }
                    else if (key.InnerText == "Subtitle")
                    {
                        subtitle = GetValue(key);
                    }
                }

                if (url != null && tite != "")
                    url.Title = tite;
                if (url != null && subtitle != "")
                    url.Subtitle = subtitle;
                if (url != null)
                    _magazinesUrl.Add(url);
            }

            await UpdateLocalMetadataFromPLIST();
        }
        /// <summary>
        /// Parse the endpoint definition.  This method is only meant to be called directly for testing purposes.
        /// </summary>
        /// <param name="reader">A reader of the endpoint definitions</param>
        public static void LoadEndpointDefinitions(StreamReader reader)
        {
            if (loaded)
            {
                return;
            }

            lock (LOCK_OBJECT)
            {
                if (loaded)
                    return;

                
                var xmlDoc = new XmlDocument();
                var xmlContents = reader.ReadToEnd();
                xmlDoc.LoadXml(xmlContents);

                var xmlRegions = xmlDoc.SelectNodes("//Regions/Region");
                foreach (XmlElement xmlRegion in xmlRegions)
                {
                    var regionSystemName = xmlRegion.ChildNodes.First(x => x.NodeName == "Name").InnerText;

                    RegionEndpoint region = null;
                    // This version of the SDK doesn't have a constant yet for the new region
                    // so go ahead and add a new region that users can lookup by it's system name.
                    if (!RegionEndpoint.hashBySystemName.TryGetValue(regionSystemName, out region))
                    {
                        region = new RegionEndpoint(regionSystemName, regionSystemName);
                        RegionEndpoint.hashBySystemName[regionSystemName] = region;
                    }

                    var xmlEndpoints = xmlRegion.SelectNodes("Endpoint");
                    foreach (XmlElement xmlEndpoint in xmlEndpoints)
                    {
                        var serviceName = xmlEndpoint.ChildNodes.First(x => x.NodeName == "ServiceName").InnerText;
                        var hostname = xmlEndpoint.ChildNodes.First(x => x.NodeName == "Hostname").InnerText;

                        bool https = false;
                        if (xmlEndpoint.ChildNodes.First(x => x.NodeName == "Https") is XmlElement)
                            https = bool.Parse(xmlEndpoint.ChildNodes.First(x => x.NodeName == "Https").InnerText);

                        bool http = false;
                        if (xmlEndpoint.ChildNodes.First(x => x.NodeName == "Http") is XmlElement)
                            http = bool.Parse(xmlEndpoint.ChildNodes.First(x => x.NodeName == "Http").InnerText);

                        if (region.endpoints == null)
                            region.endpoints = new Dictionary<string, Endpoint>();

                        region.endpoints.Add(serviceName, new Endpoint(hostname, https, http));
                    }
                }

                loaded = true;
            }
        }
Beispiel #16
0
        public bool Parse()
        {
            var temp = this.Content;

            var results          = new List <string>();
            var potentialResults = new Stack <string>();
            var prefix           = string.Empty;

            var parses = Instructions.Split('|');

            foreach (var parse in parses)
            {
                var colon = parse.IndexOf(':');
                if (colon > -1)
                {
                    var cmd       = parse.Substring(0, colon);
                    var part      = parse.Substring(colon + 1);
                    var save      = cmd.Contains("?");
                    var nextToken = cmd.Contains("&");
                    var prefixed  = cmd.Contains("+");
                    var restore   = cmd.Contains("^");

                    if (nextToken)
                    {
                        results.Add(temp);
                        temp = "";
                    }

                    if (prefixed)
                    {
                        prefix += temp;
                        temp    = string.Empty;
                    }

                    if (restore)
                    {
                        temp = potentialResults.Count > 0 ? potentialResults.Pop() : this.Content;
                    }

                    if (save)
                    {
                        potentialResults.Push(prefix + temp);
                        prefix = string.Empty;
                    }

                    var contains = temp.Contains(part);

                    if (cmd.Contains("i"))
                    {
                        if (!CheckDoc(temp))
                        {
                            return(false);
                        }

                        nodes        = doc.SelectNodes(part);
                        IsDictionary = true;
                    }
                    else if (cmd.Contains("k"))
                    {
                        keypart = part;
                    }
                    else if (cmd.Contains("v"))
                    {
                        valuepart = part;
                    }
                    else if (cmd.Contains("table") && nodes != null)
                    {
                        if (part.Contains("name="))
                        {
                            Tablename = part.Substring(part.IndexOf("name=") + 5);
                            var j = Tablename.IndexOf(";");
                            if (j > -1)
                            {
                                Tablename = Tablename.Substring(0, j);
                            }
                        }

                        foreach (var node in nodes)
                        {
                            IXmlNode key = null;
                            Windows.Data.Xml.Dom.XmlNodeList valueset = null;
                            try
                            {
                                key      = node.SelectSingleNode(keypart);
                                valueset = node.SelectNodes(valuepart);
                            }
                            catch (Exception)
                            {
                                //skip if not matching
                                continue;
                            }

                            if (!string.IsNullOrWhiteSpace(key?.InnerText))
                            {
                                if (!string.IsNullOrWhiteSpace(key.InnerText) && !dictionary.ContainsKey(key.InnerText))
                                {
                                    var values = new StringBuilder();
                                    var count  = valueset.Count();
                                    foreach (var value in valueset)
                                    {
                                        values.Append(value.InnerText);
                                        if (--count > 0)
                                        {
                                            values.Append("~");
                                        }
                                    }

                                    dictionary.Add(key.InnerText, values.ToString());
                                }
                            }
                        }

                        Debug.WriteLine(string.Format("Table {0} saved count = {1}", Tablename, dictionary.Count));
                    }
                    else if (cmd.Contains("R"))
                    {
                        temp = temp.RightOf(part);
                    }
                    else if (cmd.Contains("L"))
                    {
                        temp = temp.LeftOf(part);
                    }
                    else if (cmd.Contains("B"))
                    {
                        temp = temp.Between(part);
                    }
                    else if (cmd.Contains("!"))
                    {
                        temp = part;
                    }
                    else if (cmd.Contains("J") || cmd.Contains("j"))
                    {
                        var jParsed = JToken.Parse(temp);
                        if (jParsed != null)
                        {
                            var jToken = jParsed.SelectToken(part);
                            if (jToken != null)
                            {
                                if (cmd.Contains("j"))
                                {
                                    temp = ((JProperty)jToken).Name;
                                    if (cmd.Contains("J"))
                                    {
                                        temp += ":'" + jToken.Value <string>() + "'";
                                    }
                                }
                                else
                                {
                                    temp = jToken.Value <string>();
                                }
                            }
                            else
                            {
                                temp = string.Empty;
                            }
                        }
                        else
                        {
                            temp = string.Empty;
                        }
                    }
                    else if (cmd.Contains("X"))
                    {
                        var expr         = new Regex(part);
                        var matches      = expr.Match(part);
                        var matchResults = new StringBuilder();
                        while (matches.Success)
                        {
                            contains = true;
                            matchResults.Append(matches.Value);
                            matchResults.Append("~");
                            matches = matches.NextMatch();
                        }

                        temp = matchResults.ToString();
                        if (!string.IsNullOrWhiteSpace(temp))
                        {
                            temp = temp.Substring(0, temp.Length - 1);
                        }
                    }
                    else if (cmd.Contains("F"))
                    {
                        results.Add(prefix + temp);
                        prefix = string.Empty;
                        temp   = string.Format(part, results.ToArray());
                        results.Clear();
                    }

                    if (save && !contains)
                    {
                        temp = potentialResults.Pop();
                    }
                }

                if (string.IsNullOrWhiteSpace(temp))
                {
                    break;
                }
            }

            if (!string.IsNullOrWhiteSpace(temp))
            {
                results.Add(prefix + temp);
                prefix = string.Empty;
            }

            var builder = new StringBuilder();

            for (var i = 0; i < results.Count; i++)
            {
                builder.Append(results[i]);
                if (i < results.Count - 1)
                {
                    builder.Append("|");
                }
            }

            Result = builder.Length == 0 ? string.Empty : builder.ToString();

            return(true);
        }
        public async override Task <bool> ReadFromWeb()
        {
            if (this.Busy)
            {
                return(false);
            }
            this.Busy = true;

            try
            {
                // including user agent, otherwise FB rejects the request
                var _Client    = new HttpClient();
                var _UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
                _Client.DefaultRequestHeaders.Add("user-agent", _UserAgent);

                // fetch as string to avoid error
                var _Uri      = new Uri(this.SourceUrl);
                var _Response = await _Client.GetAsync(_Uri);

                var _String = await _Response.Content.ReadAsStringAsync();

                // convert to xml (will validate, too)
                var _XmlDocument = new Windows.Data.Xml.Dom.XmlDocument();
                _XmlDocument.LoadXml(_String);

                // parse

                var _Point1 = _XmlDocument.SelectSingleNode("//parameters[@applicable-location='point1']");

                var _Highs = _Point1.SelectNodes("//temperature[@type='maximum']/value")
                             .Select((x, i) => new { ShortIndex = i, Value = x.InnerText });

                var _LowNodes = _Point1.SelectNodes("//temperature[@type='minimum']/value");
                var _Lows     = _LowNodes
                                .Select((x, i) => new { ShortIndex = _LowNodes.Count == 6 ? i + 1 : i, Value = x.InnerText });

                var _Rains = _Point1.SelectNodes("//probability-of-precipitation/value")
                             .Select((x, i) => new { LongIndex = i, Value = string.IsNullOrEmpty(x.InnerText) ? "0" : x.InnerText });

                var _Summaries = _Point1.SelectNodes("//weather/weather-conditions/@weather-summary")
                                 .Select((x, i) => new { LongIndex = i, Value = x.InnerText });

                var _Descriptions = _Point1.SelectNodes("//wordedForecast/text")
                                    .Select((x, i) => new { LongIndex = i, Value = x.InnerText });

                var _Icons = _Point1.SelectNodes("//conditions-icon/icon-link")
                             .Select((x, i) => new { LongIndex = i, Value = x.InnerText });

                var _LongList = _XmlDocument
                                .SelectNodes("//time-layout[layout-key = 'k-p12h-n13-1' or layout-key = 'k-p12h-n14-1' or layout-key = 'k-p12h-n15-1']/start-valid-time")
                                .Select((x, i) => new { Index = i, Period = x.Attributes[0].InnerText, Text = x.InnerText })
                                .Where(x => !x.Period.ToLower().Contains("night"))
                                .Select(x => new Values
                {
                    Summary = x.Period.Equals("Today") ? DateTime.Now.ToString("dddd") :
                              x.Period.ToLower().Contains("afternoon") ? DateTime.Now.ToString("dddd") : x.Period,
                    LongIndex = x.Index,
                    Date      = x.Text,
                });
                var _ShortList = _XmlDocument
                                 .SelectNodes("//time-layout[layout-key = 'k-p24h-n7-1' or layout-key = 'k-p24h-n7-2' or layout-key = 'k-p24h-n8-1']/start-valid-time")
                                 .Where(x => !x.Attributes[0].InnerText.ToLower().Contains("night"))
                                 .Select((x, i) => new { Index = i, Period = x.Attributes[0].InnerText, Text = x.InnerText })
                                 .Select(x => new Values
                {
                    Summary = x.Period.Equals("Today") ? DateTime.Now.ToString("dddd") :
                              x.Period.ToLower().Contains("afternoon") ? DateTime.Now.ToString("dddd") : x.Period,
                    ShortIndex = x.Index,
                    Date       = x.Text,
                });
                var _List =
                    from _Long in _LongList
                    join _Short in _ShortList on _Long.Date equals _Short.Date
                    select new Values
                {
                    LongIndex  = _Long.LongIndex,
                    ShortIndex = _Short.ShortIndex,
                    Date       = _Long.Date,
                    High       = _Highs.Any(x => x.ShortIndex == _Short.ShortIndex)
                            ? _Highs.First(x => x.ShortIndex == _Short.ShortIndex).Value : "N/A",
                    Low = _Lows.Any(x => x.ShortIndex == _Short.ShortIndex)
                            ? _Lows.First(x => x.ShortIndex == _Short.ShortIndex).Value : "N/A",
                    Rain = _Rains.Any(x => x.LongIndex == _Long.LongIndex)
                            ? _Rains.First(x => x.LongIndex == _Long.LongIndex).Value : "N/A",
                    Summary = _Summaries.Any(x => x.LongIndex == _Long.LongIndex)
                            ? _Summaries.First(x => x.LongIndex == _Long.LongIndex).Value : "N/A",
                    Details = _Descriptions.Any(x => x.LongIndex == _Long.LongIndex)
                            ? _Descriptions.First(x => x.LongIndex == _Long.LongIndex).Value : "N/A",
                    Icon = _Icons.Any(x => x.LongIndex == _Long.LongIndex)
                            ? _Icons.First(x => x.LongIndex == _Long.LongIndex).Value : string.Empty,
                };

                this.Articles.Clear();
                foreach (var item in _List)
                {
                    this.Articles.Add(item.ToWeatherArticle());
                }
                await base.WriteToCache();

                this.InError = false;
                return(true);
            }
            catch
            {
                // weather
                Debug.WriteLine("Error reading: " + this.SourceUrl);
                System.Diagnostics.Debugger.Break();
                // setting inerror to true will remove it from the UI
                this.InError = true;
                return(false);
            }
            finally { this.Busy = false; }
        }
Beispiel #18
0
 private async void playps(object sender, RoutedEventArgs e)
 {
     // XML获取
     string address = "http://dict-co.iciba.com/api/dictionary.php?w=";
     address += AddWordDisplay.Text;
     string result;
     if (address.Length == 0) return;
     else
     {
         try
         {
             HttpResponseMessage response = await httpclient.GetAsync(address);
             response.EnsureSuccessStatusCode();
             //AddPsDisplay.Text = response.StatusCode + " " + response.ReasonPhrase;
             result = await response.Content.ReadAsStringAsync();
             //AddExplainDisplay.Text = result;
         }
         catch (HttpRequestException hre)
         {
             AddExplainDisplay.Text = "Error1" + hre.ToString();
             return;
         }
         catch (Exception ex)
         {
             AddExplainDisplay.Text = "Error1" + ex.ToString();
             return;
         }
     }
     //XML解析
     string node;
     if(result.Length!=0)
     {
         try
         {
             XmlDocument xmler = new XmlDocument();
             xmler.LoadXml(result);
             XmlNodeList nodelist;
             nodelist = xmler.SelectNodes("/dict");
             node= nodelist[0].SelectSingleNode("pron").InnerText;
         }
         catch
         {
             return ;
         }
     }
     else return ;
     //AddPsDisplay.Text = node;
     //Download
     StorageFile destination = await KnownFolders.DocumentsLibrary.CreateFileAsync("TempVoice.mp3", CreationCollisionOption.ReplaceExisting);
     if (node.Length != 0)
     {
         try
         {
             Uri url = new Uri(node.Trim());
             BackgroundDownloader downloader = new BackgroundDownloader();
             DownloadOperation load = downloader.CreateDownload(url, destination);
             await load.StartAsync();
         }
         catch
         {
             return ;
         }
     }
     else return ;
     //play
     if (destination != null)
     {
         try
         {
             var stream=await destination.OpenAsync(Windows.Storage.FileAccessMode.Read);
             outputmedia.SetSource(stream,destination.ContentType);
             outputmedia.AutoPlay=true;
         }
         catch
         {
             return ;
         }
     }
     else return ;
 }
Beispiel #19
0
 public async void GetCharacters()
 {
     String url = "https://api.eveonline.com/account/Characters.xml.aspx?keyID=" + KeyID + "&vCode=" + VCode;
     String text;
     HttpClient client = new HttpClient();
     using (HttpResponseMessage response = await client.GetAsync(new Uri(url)))
     {
         response.EnsureSuccessStatusCode();
         text = await response.Content.ReadAsStringAsync();
     }
     XmlDocument doc = new XmlDocument();
     doc.LoadXml(text);
     XmlNodeList nodeList = doc.SelectNodes("/eveapi/result/rowset")[0].ChildNodes;
     for (int i = 0; i < nodeList.Count; i++)
     {
         IXmlNode temp = nodeList[i];
         if (temp.NodeName == "row")
         {
             EveApi.Characters.Add(new Character(temp));
         }
     }
 }
Beispiel #20
0
        /* *
        * * Provisiong result XML looks like this:
        * *   <?xml version="1.0"?>
        * *   <CarrierProvisioningResults>
        * *       <MBNProfiles>
        * *           <DefaultProfile name="Foo1" errorCode="800704b6" />
        * *           <PurchaseProfile name="Foo2" errorCode="00000000 />
        * *           <Messages>
        * *                <Message position="1" errorCode="82170008" errorDetails="error description" />
        * *                <Message position="2" errorCode="00000000" errorDetails="error description" />
        * *                <Message position="3" errorCode="82170008" errorDetails="error description" />
        * *           </Messages>
        * *       </MBNProfiles>
        * *       <WLANProfiles errorCode="80070426" />
        * *       <Provisioning errorCode="82170008" />
        * *       <Plans>
        * *           <Plan name="PlanA" errorCode="00000000" />
        * *           <Plan name="PlanB" errorCode="82170012" />
        * *           <Plan name="PlanC" errorCode="00000000" />
        * *       </Plans>
        * *   </CarrierProvisioningResults>
        * */
        public string ParseResultXML(string resultsXml)
        {
            string resultStr = "\nProvisioning Result:";

            var xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(resultsXml);

            var errorCodeNodes = xmlDoc.SelectNodes("//*[@errorCode != '00000000']");
            if (errorCodeNodes.Length != 0)
            {

                for (uint index = 0; index < errorCodeNodes.Length; index++)
                {
                    var errorCodeNode = errorCodeNodes.Item(index);
                    var errorCode = errorCodeNode.Attributes.GetNamedItem("errorCode").NodeValue;
                    var nodeName = errorCodeNodes.Item(index).NodeName;
                    var description = ParseErrorCode((string)errorCode);

                    switch (nodeName)
                    {
                        case "MBNProfiles":
                        case "WLANProfiles":
                        case "Plans":
                        case "Provisioning":
                            {
                                resultStr += "\nError occured during provisioning at top level node \"" + nodeName +
                                    "\", and hence there will be no child node attached to this node" + description;
                            }
                            break;
                        case "Message":
                            {
                                //var messagePosition = errorCodeNode.GetAttribute("position");
                                //var errorDetails = errorCodeNode.GetAttribute("errorDetails");
                                var messagePosition = errorCodeNode.Attributes.GetNamedItem("position").NodeValue;
                                var errorDetails = errorCodeNode.Attributes.GetNamedItem("errorDetails").NodeValue;
                                resultStr += "\nError occured during provisioning Message[" + messagePosition + "], error code: " +
                                    errorCode + ", error details: " + errorDetails;
                            }
                            break;
                        case "DefaultProfile":
                        case "PurchaseProfile":
                        case "WLANProfile":
                        case "Plan":
                            {
                                //var nameAttribute = errorCodeNode.GetAttribute("name");
                                var nameAttribute = errorCodeNode.Attributes.GetNamedItem("name").NodeValue;
                                resultStr += "\nError occured during provisioning " + nodeName + ", name: " +
                                    nameAttribute + description;
                            }
                            break;
                        default:
                            resultStr += "\nError occured during provisioning " + nodeName + ", error code: " + errorCode;
                            break;
                    }
                }
            }
            return resultStr;

        }