我正在使用WPF中的webbrowser组件阅读html。我应该让user to give there own text, upload an image and save it as a .html file
。
通过这种方式我可以得到标签值:
string myTagValue = (FrameWithinGrid.Document as mshtml.HTMLDocument)
.getElementsByTagName("div")
.OfType<mshtml.IHTMLElement>()
.First()
.innerText;
我如何get the value from a text box and save it as a .html file
包含新图片?
需要你的帮助。谢谢。
这是html文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Welcome to Linguini Party!</title>
<style type="text/css">
* {
margin: 0;
}
html, body {
height: 100%;
font-family: Arial;
background-color: #e1dfe3;
color: #333333;
background-repeat: no-repeat;
}
h1 {
margin-right: 8%;
margin-left: 7%;
font-size: 450%;
text-align: center;
}
h2 {
font-size: 450%;
text-align: center;
color: #8a00ca;
font-style: italic;
}
</style>
</head>
<body id="Imagebg" background="welcome_final1.png">
<div id="container">
<h1 id="text1">Welcome to<br></h1>
<h2 id="text2">Linguini Party!</h2>
</div>
</body>
</html>
答案 0 :(得分:1)
实现这一目标的一个策略是创建一个html模板......
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body id="Imagebg" >
<div id="container">
<h1 id="text1">$$TEXT1$$<br></h1>
<h2 id="text2">$$TEXT2$$</h2>
<img src="$$IMAGELOCATION$$"/>
</div>
</body>
</html>
此模板已使用诸如$$ TEXT1 $$之类的标记进行检测。这些将在以后用自定义文本替换。
将模板包含为资源,或作为外部文件或任何位置。我选择将其作为嵌入式资源包含在内。这是设置......
您 要使用嵌入式资源,您也可以使用WebBrowser
获取html。我喜欢使用资源,因为它避免了文件丢失或损坏导致的异常。
下一步很简单。这是一个有效的视图模型...
public class ViewModel
{
public string Text1 { get; set; }
public string Text2 { get; set; }
public string ImagePath { get; set; }
public string DestinationName { get; set; }
public void Start()
{
var resourceName = Assembly.GetExecutingAssembly().GetManifestResourceNames().Where(q => q.Contains("Template.html")).FirstOrDefault();
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
using (StreamReader reader = new StreamReader(stream))
{
string html = reader.ReadToEnd().Replace("$$TEXT1$$", Text1).Replace("$$TEXT2$$", Text2).Replace("$$IMAGELOCATION$$", ImagePath);
File.WriteAllText(DestinationName, html);
}
}
}
}
View Model获取调用者设置的各种Text1(etc)属性,然后加载HTML模板并用自定义内容替换标记。然后它使用File上的静态方法来保存它。
您可以修改此策略以使用任何其他类型的工具,只要它一致。对于更具伸缩性,更全面的解决方案,我建议HtmlAgility。我已经使用它多年了。