Наследование: IXmlLoadSettings
Пример #1
0
        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.");
            }

        }
Пример #2
0
        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);

        }
Пример #3
0
        public async Task init() {
            var loadSettings = new Windows.Data.Xml.Dom.XmlLoadSettings();
            loadSettings.ProhibitDtd = true;
            loadSettings.ResolveExternals = false;

            if (dbFile == null) {
                // 保存取得的文章数据
                // 获取当前应用的配置文件夹(支持可同步的)
                StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
                // 打开RSS源XML配置文件,如果不存在则创建
                dbFile = await localFolder.CreateFileAsync("feeditems_database.xml", CreationCollisionOption.OpenIfExists);

                // 如果应用为第一次运行,则复制基础database文件
                ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
                object noDatabase = localSettings.Values["noDatabase"];
                if (noDatabase == null) {
                    StorageFolder templateFolder = await
                        Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("data");
                    StorageFile templateFile = await templateFolder.CreateFileAsync(
                        "feeditems_database.xml", CreationCollisionOption.OpenIfExists);
                    await templateFile.CopyAndReplaceAsync(dbFile);
                    localSettings.Values["noDatabase"] = true;
                }
            }

            if (dbDoc == null) {
                // 读取XML配置文件
                dbDoc = await XmlDocument.LoadFromFileAsync(dbFile, loadSettings);
            }
        }
Пример #4
0
        public async Task LoadPLISTAsync()
        {
            _folder = await KnownFolders.DocumentsLibrary.CreateFolderAsync(_name, CreationCollisionOption.OpenIfExists);
            await LoadLocalMetadata();

            var settings = new XmlLoadSettings();
            settings.ProhibitDtd = false;
            settings.ValidateOnParse = true;
            settings.ResolveExternals = true;

            try
            {
                XmlDocument xml = new XmlDocument();


                bool noXml = false;
                try
                {
                    var resonse = await new HttpClient().GetAsync(this._pList.AbsoluteUrl);
                    resonse.EnsureSuccessStatusCode();
                    var str = await resonse.Content.ReadAsStringAsync();
                    xml.LoadXml(str, settings);
                    //xml = await XmlDocument.LoadFromUriAsync(new Uri(this._pList.AbsoluteUrl), settings);
                }
                catch
                {
                    noXml = true;
                }
                if (!noXml)
                {
                    await ReadPList(xml);
                }
                else
                {
                    var fileHandle =
                        await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"CustomizationAssets\Magazines.plist");
                    var stream = await fileHandle.OpenReadAsync();
                    var dataReader = new DataReader(stream.GetInputStreamAt(0));
                    var size = await dataReader.LoadAsync((uint)stream.Size);
                    var str = dataReader.ReadString(size);
                    dataReader.DetachStream();
                    stream.Dispose();
                    stream = null;
                    if (str.Contains("<!DOCTYPE"))
                    {
                        var pos = str.IndexOf("<!DOCTYPE");
                        var end = str.IndexOf(">", pos + 7);
                        if (end >= 0)
                            str = str.Remove(pos, end - pos + 1);
                    }
                    xml.LoadXml(str, settings);
                    await ReadPList(xml);
                }
            }
            catch
            {
                throw new Exception("Unable to download plist");
            }
        }
Пример #5
0
        public async Task<XmlDocument> LoadDatabase()
        {
            var loadSettings = new XmlLoadSettings
            {
                ProhibitDtd = false,
                ResolveExternals = true
            };

            var folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Database");
            var file = await folder.GetFileAsync("database.xml");
            
            return await Windows.Data.Xml.Dom.XmlDocument.LoadFromFileAsync(file, loadSettings);
        }
        private async Task loadXML()
        {
            storageFile = await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync("FavoriteFileStore.xml", CreationCollisionOption.OpenIfExists);

            Windows.Data.Xml.Dom.XmlLoadSettings loadSettings = new Windows.Data.Xml.Dom.XmlLoadSettings();
            loadSettings.ProhibitDtd      = false; // sample
            loadSettings.ResolveExternals = false; // sample
            document = new XmlDocument();
            string content = await FileIO.ReadTextAsync(storageFile);

            if (!string.IsNullOrEmpty(content))
            {
                document.LoadXml(content);
            }
            else
            {
                document.AppendChild(document.CreateElement("Favorites"));
            }
        }
Пример #7
0
        public async Task LoadPLISTAsync()
        {
            _folder = await KnownFolders.DocumentsLibrary.CreateFolderAsync(_name, CreationCollisionOption.OpenIfExists);
            await LoadLocalMetadata();

            var settings = new XmlLoadSettings();
            settings.ProhibitDtd = false;
            settings.ValidateOnParse = true;
            settings.ResolveExternals = true;

            try
            {
                var xml = await XmlDocument.LoadFromUriAsync(new Uri(this._pList.AbsoluteUrl), settings);
                await ReadPList(xml);
            }
            catch
            {
                throw new Exception("Unable to download plist");
            }
        }
Пример #8
0
        public async void loadXML()
        {
            Windows.Storage.StorageFolder storageFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("XML"); // you can get the specific folder from KnownFolders or other folders via FolderPicker as well

            Windows.Storage.StorageFile storageFile = await storageFolder.GetFileAsync("FavoriteSuggestionList.xml");

            Windows.Data.Xml.Dom.XmlLoadSettings loadSettings = new Windows.Data.Xml.Dom.XmlLoadSettings();
            loadSettings.ProhibitDtd      = false; // sample
            loadSettings.ResolveExternals = false; // sample
            XmlDocument doc = await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);

            XmlNodeList groups = doc.SelectNodes("//FavoriteList/FavoriteItem");

            foreach (var group in groups)
            {
                SkyDriveFile favoriteItem = new SkyDriveFile(group.Attributes[0].NodeValue.ToString(), group.Attributes[1].NodeValue.ToString(), group.Attributes[2].NodeValue.ToString());
                favoriteItem.IsChecked    = true;
                favoriteItem.ShowCheckBox = true;
                favoriteList.Add(favoriteItem);
            }
        }
Пример #9
0
        public IAsyncOperation<IList<ItemKey>> NewRawAsync(string xml)
        {
            // For new items there should not be any item keys,
            // created, or updated dates because these will be new items
            var loadSettings = new XmlLoadSettings {ProhibitDtd = true};
            var xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xml, loadSettings);

            // Do not convert these to a foreach loop since the collection 
            // is modified by the remove
            XmlNodeList nodes = xmlDoc.GetElementsByTagName("thing-id");
            for (int i = (int) nodes.Length - 1; i >= 0; i--)
            {
                IXmlNode node = nodes[i];
                node.ParentNode.RemoveChild(node);
            }

            nodes = xmlDoc.GetElementsByTagName("updated");
            for (int i = (int) nodes.Length - 1; i >= 0; i--)
            {
                IXmlNode node = nodes[i];
                node.ParentNode.RemoveChild(node);
            }

            nodes = xmlDoc.GetElementsByTagName("created");
            for (int i = (int) nodes.Length - 1; i >= 0; i--)
            {
                IXmlNode node = nodes[i];
                node.ParentNode.RemoveChild(node);
            }

            // Our put things xml does not support <things> or <ArrayOfThings>
            // We just want to serialize <thing> repeatedly
            nodes = xmlDoc.GetElementsByTagName("thing");
            var parsedXml = new StringBuilder();
            for (int i = 0; i < nodes.Length; i++)
            {
                parsedXml.Append(nodes[i].GetXml());
            }

            return PutRawAsync(parsedXml.ToString());
        }
Пример #10
0
        async private void capture_Click(object sender, RoutedEventArgs e)
        {
            XmlDocument doc; //doc is history doc
            string history_file_xml;
            ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();
            StorageFile file = await KnownFolders.PicturesLibrary.CreateFileAsync("Photo.jpg", CreationCollisionOption.ReplaceExisting);
            await captureManager.CapturePhotoToStorageFileAsync(imgFormat, file);
            bt_capture.IsEnabled = false;
            
            rootPage.NotifyUser("Done saving images, connecting...", NotifyType.StatusMessage);
            StreamSocket socket = new StreamSocket();
            
            HostName hostName= new HostName("rs1008linux01.cloudapp.net");

            try {                
                await socket.ConnectAsync(hostName, "12346");                
            }
            catch(Exception)
            {
                rootPage.NotifyUser("Error: Host server not available.", NotifyType.ErrorMessage);
                return;
            }
            rootPage.NotifyUser("Connected", NotifyType.StatusMessage);
            DataWriter writer= new DataWriter(socket.OutputStream);            
            rootPage.NotifyUser("Uploading...", NotifyType.StatusMessage);
            byte[] data=  new byte[1024];
            Stream x= await file.OpenStreamForReadAsync();
            long file_length = x.Length;
            long tail = file_length % 1024;
            double offset = 0;
            string progress;
            try
            {
                while (file_length > offset)
                {

                    await x.ReadAsync(data, 0, 1024);
                    offset = offset + 1024;
                    if(file_length<offset)
                    {
                        byte[] temp = new byte[tail];
                        Array.Copy(data, temp, (int)tail);
                        writer.WriteBytes(temp);

                    }
                    else
                        writer.WriteBytes(data);                   
                    
                    progress = "Progress: " + (Math.Round(offset / x.Length * 100, 0)).ToString() + "%";
                   
                    rootPage.NotifyUser(progress, NotifyType.StatusMessage);
                    await writer.StoreAsync();
                    await writer.FlushAsync();
                }
            }

            catch(Exception ex)
            {
                rootPage.NotifyUser(ex.Message, NotifyType.StatusMessage);
                return;
            }         
            
            writer.DetachStream();
            x.Dispose();

            rootPage.NotifyUser("Uploading finished.", NotifyType.StatusMessage);

            byte[] buffer = new byte[128];

            Stream results=socket.InputStream.AsStreamForRead();
            var memoryStream = new MemoryStream();
            results.CopyTo(memoryStream);
            buffer = memoryStream.ToArray();
            //await socket.InputStream.ReadAsync(buffer.AsBuffer(), 128,InputStreamOptions.ReadAhead);

            socket.Dispose();
            

            bt_capture.IsEnabled = true;
            concentration = Encoding.UTF8.GetString(buffer)+" nm"; //get concentration result
            geolocation.Text = concentration;
            rootPage.NotifyUser("Data generated.", NotifyType.StatusMessage);


            history_file_xml = "history.xml";

            StorageFile storageFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(history_file_xml);
     

            XmlLoadSettings loadSettings = new XmlLoadSettings();
            loadSettings.ProhibitDtd = false;
            loadSettings.ResolveExternals = false;            
            doc = await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);

            var rootnode = doc.SelectSingleNode("results");
            IXmlNode child = doc.CreateElement("result");                    
            rootnode.AppendChild(child);

            IXmlNode xml_id = doc.CreateElement("id");
            xml_id.InnerText = "5";
            child.AppendChild(xml_id);

            IXmlNode xml_date = doc.CreateElement("date");
            xml_date.InnerText = "2016-2-19 4:12:12";
            child.AppendChild(xml_date);

            IXmlNode xml_location = doc.CreateElement("location");
            xml_location.InnerText = cityname;
            child.AppendChild(xml_location);

            IXmlNode xml_concentration = doc.CreateElement("concentration");            
            xml_concentration.InnerText = geolocation.Text;            
            child.AppendChild(xml_concentration);

            IXmlNode xml_model= doc.CreateElement("model");
            xml_model.InnerText = "Fluoride Ion";
            child.AppendChild(xml_model);

            //rootPage.NotifyUser(doc.GetXml(), NotifyType.StatusMessage);
            
            await doc.SaveToFileAsync(storageFile);
            
        }
Пример #11
0
        // Stub function for testing
        public static async Task<XDocument> LoadTestRssXml()
        {
            StorageFolder storageFolder = await Package.Current.InstalledLocation.GetFolderAsync("Test");
            StorageFile storageFile = await storageFolder.GetFileAsync("TestRss.xml");

            XmlLoadSettings loadSettings = new XmlLoadSettings();
            loadSettings.ProhibitDtd = false;
            loadSettings.ResolveExternals = false;
                
            XmlDocument xmlDoc = await XmlDocument.LoadFromFileAsync(storageFile, loadSettings);
            XDocument doc = XDocument.Parse(xmlDoc.GetXml());
            var rtnTask = Task.Factory.StartNew(() => doc);
            return await rtnTask;
        }
Пример #12
0
        public async Task<bool> LoadPLISTAsync()
        {
            bool isUpdated = false;

            _folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(_name, CreationCollisionOption.OpenIfExists);
            if (_magazinesLocalUrl.Count == 0)
            {
                await LoadLocalMetadata();
                await LoadLocalMetadataDownloaded();
            }

            var settings = new XmlLoadSettings();
            settings.ProhibitDtd = false;
            settings.ValidateOnParse = true;
            settings.ResolveExternals = true;

            try
            {
                XmlDocument xml = new XmlDocument();

                bool noXml = false;
                try
                {
                    var httpClient = new HttpClient();
                    httpClient.DefaultRequestHeaders.Add("user-agent", "LibrelioWinRT");
                    var url = new Uri(this._pList.AbsoluteUrl);
                    var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url);

                    var value = ApplicationData.Current.LocalSettings.Values["last_update"] as string;
                    if (value == null)
                    {
                        var date = new DateTime(2012, 4, 15);
                        ApplicationData.Current.LocalSettings.Values["last_update"] = date.ToUniversalTime().ToString("R");
                        value = ApplicationData.Current.LocalSettings.Values["last_update"] as string;
                    }

                    httpRequestMessage.Headers.IfModifiedSince = DateTime.Parse(value);
                    var response = await httpClient.SendAsync(httpRequestMessage);

                    //var resonse = await new HttpClient().GetAsync(this._pList.AbsoluteUrl);
                    response.EnsureSuccessStatusCode();
                    var str = await response.Content.ReadAsStringAsync();
                    xml.LoadXml(str, settings);
                    //xml = await XmlDocument.LoadFromUriAsync(new Uri(this._pList.AbsoluteUrl), settings);
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("304") || ex.Message.Contains("Not Modified")) return false;
                    noXml = true;
                }

                if (!noXml)
                {
                    await ReadPList(xml);
                    isUpdated = true;
                }
            }
            catch
            {
                throw new Exception("Unable to download plist");
            }

            return isUpdated;
        }
Пример #13
0
        public async Task<XmlRpcResponse> CallRpc(string methodName, List<XmlRpcValue> parameters) {

            var sb = new StringBuilder();

            var writer = XmlWriter.Create(sb);
            writer.WriteStartDocument();

            writer.WriteStartElement("methodCall");

            writer.WriteElementString("methodName", methodName);


            if (parameters != null && parameters.Count() > 0)
            {
                writer.WriteStartElement("params");

                foreach (var parm in parameters)
                {
                    writer.WriteStartElement("param");

                    writer.WriteStartElement("value");

                    parm.BuildXml(writer);

                    writer.WriteEndElement();

                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
            }

            writer.WriteEndElement();

            writer.WriteEndDocument();
            writer.Flush();
            writer.Dispose();

            try
            {
                var client = new HttpClient();

                if (Useragent != null)
                {
                    client.DefaultRequestHeaders.UserAgent.Add(new Windows.Web.Http.Headers.HttpProductInfoHeaderValue(Useragent));
                }

                var inputPars = sb.ToString();

                var result = await client.PostAsync(_uri, new HttpStringContent(inputPars, Windows.Storage.Streams.UnicodeEncoding.Utf8, "text/xml"));

                var results = await result.Content.ReadAsStringAsync();

                result.EnsureSuccessStatusCode();

                result.Dispose();
                client.Dispose();

                sb.Clear();

                var resultDoc = new Windows.Data.Xml.Dom.XmlDocument();
                var settings = new XmlLoadSettings()
                {
                    ElementContentWhiteSpace = false
                };

                resultDoc.LoadXml(results.Trim(), settings);

                var node = resultDoc.SelectSingleNode("methodResponse");

                if (node != null)
                {
                    var ret = new XmlRpcResponse(node);
                    return ret;
                }
                throw new XmlRpcException(801, "Response failed to return proper XML response");

            }
            catch (Exception ex)
            {
                if (ex is XmlRpcException)
                {
                    throw ex;
                }
                else
                {
                    throw new XmlRpcException(800, ex.Message);
                }
            }

            return null;
        }