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

0

您正在将文件读入reader对象。您正在将属性提取到attributeValue字符串中。然后,您将更新该字符串。但是您永远不会再次将字符串写回 - 这有点可以理解,因为 XmlReader 仅使您能够阅读。

底线是文件永远不会改变。因此,当您再次将文件加载到html字符串中时,它显然仍将具有原始内容。

我建议将 from 加载reader到一个XmlDocument对象中。Save然后,您可以操作文档并使用该方法再次将其写出。

于 2013-05-31T12:34:51.133 回答