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 のようなライブラリを使用するように指定しないでください
私を助けてください。
ありがとう。