1

WebView でローカル HTML を読み込む

        appfolder = ApplicationData.Current.LocalFolder;
        xmlFile = await appfolder.GetFileAsync("000Title.html");
        using (Stream stream = await xmlFile.OpenStreamForReadAsync())
        {
            InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
            //stream.Read
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Async = true;
            settings.DtdProcessing = DtdProcessing.Ignore;
            using (XmlReader reader = XmlReader.Create(stream, settings))
            {
                while (await reader.ReadAsync())
                {
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "img")
                    {
                        string  attributeValue = reader.GetAttribute("src"); // img elemeent 
                        string val = attributeValue;
                        StorageFile file = await appfolder.GetFileAsync(attributeValue);
                        using (var stream1 = await file.OpenAsync(FileAccessMode.Read))
                        {
                            var reader1 = new DataReader(stream1.GetInputStreamAt(0));
                            var bytes = new byte[stream1.Size];
                            await reader1.LoadAsync((uint)stream1.Size);
                            reader1.ReadBytes(bytes);
                            string base64 = Convert.ToBase64String(bytes);
                            string Base = "data:image/jpg;base64," + base64;
                         }

ここでは、属性「Src」の値を base64 文字列に置き換えています。

       attributeValue = attributeValue.Replace(attributeValue,Base);
       html = await FileIO.ReadTextAsync(xmlFile);
       view.NavigateToString(html);

ここでは、webview で HTML を読み込んでいますが、以前の値で表示されています。

更新: Html Agility Pack のようなライブラリを使用するように指定しないでください

私を助けてください。

ありがとう。

4

1 に答える 1