2012-07-31 52 views
2

我想在Windows Phone 7應用程序中完成以下兩項任務。如何解析Windows Phone 7中的HTML頁面數據?

1.導航到網頁(例如http://www.FlightsInd.com)並獲取HTML頁面數據。我將確保所有文檔數據完全下載。這裏一旦DocumentCompleted事件被觸發這意味着在請求中的所有數據被下載

WebBrowser objWB = new WebBrowser(); 
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
objWB.Navigate("http://www.FlightsInd.com") 

在C#.NET我使用下面的代碼這樣做。

2.Parse HTML頁面元素數據。

在C#.Net我使用下面的代碼來做這個。

 doc = webBrowser1.Document; 
     btnElem = doc.GetElementById(streleid); 

Canody可以幫助我使用上述兩個實現的等效類/代碼嗎?

回答

4

使用WebBrowser Windows Phone control

導航到你的頁面

browser.Navigate(new Uri("http://www.FlightsInd.com「));

要了解導航已完成並且內容已加載

WebBrowser.Navigated Event

WebBrowser.LoadCompleted Event - WebBrowser控件加載內容後發生。

WebBrowser.NavigationFailed Event - 跟蹤導航故障

web瀏覽器類事件是按以下順序提出:導航,導航中,和LoadCompleted。

將HTML源

web瀏覽器的Windows Phone控件包含特殊功能,以保存當前顯示在WebBrowser控件作爲一個字符串的HTML內容來源:

string html = browser.SaveToString();

爲了解析Html

看看HTML Agility Pack

What is the best way to parse html in C#?

Parsing HTML String

PS。 或者您可以使用webBrowser.InvokeScript (C#)與js eval的組合來調用任何js命令,它可以使用window.external.notify來將結果傳遞迴C#。

+0

我能夠做到這一點直到獲得Html源代碼。但是,html源代碼具有確切的SourceCode的副本。當它具有所有這些額外的字符和文本時,很難解析它。 – krrishna 2012-08-02 14:55:26

0

如果我的問題得到解決,您可以使用網絡瀏覽器isBusy屬性來跟蹤它是否仍在下載數據並在其仍然繁忙時進行睡眠。

對於解析html文檔,你可以使用NSoup庫來解析html,就像jQuery一樣。它是來自java的JSoup庫的一個端口。 http://www.developerfusion.com/project/98472/nsoup/

語法解釋在這裏: http://jsoup.org/cookbook/extracting-data/selector-syntax

+0

Windows Phone WebBrowser上的IsBusy?不。 – 2013-02-22 17:26:50

0

如果你擁有你導航到的網頁,你可以使用window.external.notify(document.documentElement.innerHTML)在JavaScript的HTML文件傳遞給本地層。然後,您將使用ScriptNotify捕獲您的本機代碼中的值。

稍微複雜一點,但如果你不擁有網頁,你可以託管你自己的網頁,用原始頁面打開一個iframe,並從iframe中獲取html。

在這裏看到更多的信息上window.external.notify:http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.scriptnotify(v=vs.95).aspx