I want to do the below two tasks In Windows Phone 7 application.
1.Navigate to a web page (e.g.http://www.FlightsInd.com) and get the HTML page data.I wnat to ensure that all the Document data is completely downloaded.
In C#.Net i am doing this using below code:
WebBrowser objWB = new WebBrowser();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
objWB.Navigate("http://www.FlightsInd.com")
here once the DocumentCompleted event is fired it means all the data in that request is downloaded.
2.Parse HTML page elements data.
In C#.Net i am doing this using below code.
doc = webBrowser1.Document;
btnElem = doc.GetElementById(streleid);
Can anyody help me with the equivalent classes/code for the above two implementations ?
If I get your question right, you can use web browser
isBusy
property to track if its still downloading data and sleep while its still busy.For parsing html document you can use NSoup library to parse the html just like jQuery. Its a port from java's JSoup library. http://www.developerfusion.com/project/98472/nsoup/
Syntax explained here: http://jsoup.org/cookbook/extracting-data/selector-syntax
Use WebBrowser Windows Phone control
To Navigate to your page
browser.Navigate(new Uri("http://www.FlightsInd.com"));
To understand that navigation completed and content is loaded
WebBrowser.Navigated Event
WebBrowser.LoadCompleted Event - Occurs after the WebBrowser control has loaded content.
WebBrowser.NavigationFailed Event - to track navigation failures
The WebBrowser class events are raised in the following order: Navigating, Navigated, and LoadCompleted.
To get Html source
WebBrowser Windows Phone control contains special function to save the source for the HTML content currently displayed in WebBrowser control as a string:
string html = browser.SaveToString();
To parse Html
Look at HTML Agility Pack
What is the best way to parse html in C#?
Parsing HTML String
PS. Alternatively you can use webBrowser.InvokeScript (C#) with combination of js eval to invoke any js command which can use window.external.notify inside it to pass results back to C#.
If you own the webpage you are navigating to, you can use
window.external.notify(document.documentElement.innerHTML)
in your javascript to pass the document html to native layer. Then you would catch the value in your native code using ScriptNotify.A little more complex, but if you don't own the webpage, you could host your own webpage, open an iframe with the original page, and get the html from the iframe.
See here for more info on window.external.notify: http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.scriptnotify(v=vs.95).aspx