C#读取,修改,保存HTML文件(C#窗体Treeview控制HTML中的VLC的视频播放列表)

    直接理解为:C#修改网页的参数。

    由于项目的需要,要实现在C#窗体的Treeview操作下能够控制窗体中webbrowser读取的HTML静态网页中的VLC视频播放器的播放列表。简单理解就是Treeview控制静态网页中的VLC的视频播放列表。通俗理解就是,后天能够控制前台页面的VLC的视频播放列表。

    以下是案例,仅供参考:

C#读取,修改,保存HTML文件(C#窗体Treeview控制HTML中的VLC的视频播放列表)_第1张图片

    第一步:建立如上图所示的Treeview:该图是一个Treeview的展开图,其中“叶子结点A”和“叶子结点B”是我们要实现控制视频播放列表的操作。

    第二步:在窗体中放置一个webbrowser控件,并且读取本地静态网页, 注意:为了能够操作网页中的javascript,要在添加:

    //导入HTML文件,使javascript可视化

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    添加静态网页代码如下(为了打开窗体就能显示一个播放界面才添加的,否则没必要添加):

            //网页对象

           System.IO.FileInfo file =newSystem.IO.FileInfo("RealTimeVideo.html");

            //WebBrowser控件显示的网页文件路径

            this.webBrowser1.Url=newUri(file.FullName);

            //将当前类设置为可由脚本访问

            this.webBrowser1.ObjectForScripting=this;

    以上这段代码要添加到Form_Load()方法中。

    第三步:添加一个控制播放的方法,这里我用的方法名是SetRealTimeVideo()。

        publicstaticvoidSetRealTimeVideo()

        {

            //说明:为了测试,可以将其设为全局变量,来传递视频播放流rtsp

            stringvideoSrc = "rtsp://218.204.223.237:554/live/1/67A7572844E51A64/f68g2mj7wjua3la7.sdp";

 

            //html写成字符串修改

            Stream myStream =newFileStream("RealTimeVideo11.html",FileMode.Open);

            Stream myStream1 =newFileStream("RealTimevideo12.html",FileMode.Open);

 

            Encoding encode = System.Text.Encoding.GetEncoding("GB2312");

 

            StreamReader myStreamReader =newStreamReader(myStream, encode);

            StreamReader myStreamReader1 =newStreamReader(myStream1, encode);

 

            stringstrhtml1 = myStreamReader.ReadToEnd();

            stringstrhtml2 = myStreamReader1.ReadToEnd();

            //写入RealTimevideo12.html

           strhtml2 = strhtml1;

            //RealTimevideo12.html网页中视频播放路径的value的值value="aaaa"替换掉

            stringstroutput = strhtml2.Replace("aaaa", videoSrc);

            //HtmlPage.Document.GetElementById("vlcSrc").SetAttribute("value","aaaa");

 

            //myStream.Seek(0,SeekOrigin.Begin);

           myStream1.Seek(0, SeekOrigin.Begin);

           myStream1.SetLength(0);

 

            //StreamWritersw = new StreamWriter(myStream, encode);

            StreamWriter sw1 =newStreamWriter(myStream1, encode);

            //sw.Write(stroutput);

           sw1.Write(stroutput);

 

            //sw.Flush();

           sw1.Flush();

            //sw.Close();

           sw1.Close();

           myStream.Close();

           myStream1.Close();

 

           System.IO.FileInfo file =newSystem.IO.FileInfo("RealTimeVideo12.html");

            //WebBrowser控件显示的网页文件路径

           myweb.Url = new Uri(file.FullName);

            //将当前类设置为可由脚本访问

           myweb.ObjectForScripting = myweb;

 

            第二种修改方法:修改DOM元素属性也可以实现的

            //System.Windows.Browser.HtmlDocumentdocument = HtmlPage.Document;

            //System.Windows.Browser.HtmlElementdom = document.GetElementById("vlcSrc");

            //dom.SetAttribute("value",video);

        }

    实现的思路:其实思路很简单,1)将RealTimeVideo11.html 作为原来的视频播放器,但不显示。读取这个html文件形成字符串strhtml1;

    2)然后打开一个空白的静态网页RealTimeVideo12.html将,也要读取成字符串strhtml2;

    3)将strhtml1的字符串赋值给strhtml2的字符串;strhtml2= strhtml1;

    4)然后将strhtml2中的视频播放地址修改为当前Treeview选择的视频流,即通过下面代码实现:

    string stroutput = strhtml2.Replace("aaaa", videoSrc);

    5)最后加载RealTimeVideo12.html,显示视频播放。其实,真正显示的是RealTimeVideo12.html ,其内容来自于RealTimeVideo11.html。

    第四步:将SetRealTimeVideo()添加到Treeview下的执行方法中,即可实现Treeview对视频播放列表的控制。

    其中,RealTimeVideo.html和 RealTimeVideo1.html 视频文件下载路径:http://download.csdn.net/detail/qq_30507287/9586828

你可能感兴趣的:(C#)