【问题标题】:How to parse HTML page data in Windows Phone 7?如何在 Windows Phone 7 中解析 HTML 页面数据?
【发布时间】:2012-07-29 14:24:34
【问题描述】:

我想在 Windows Phone 7 应用程序中执行以下两项任务。

1.导航到网页(例如http://www.FlightsInd.com)并获取HTML页面数据。我想确保所有文档数据都已完全下载。

在 C#.Net 中,我使用以下代码进行此操作:

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

这里一旦触发 DocumentCompleted 事件,这意味着该请求中的所有数据都已下载。

2.解析HTML页面元素数据。

在 C#.Net 中,我使用以下代码进行此操作。

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

任何人都可以帮助我处理上述两种实现的等效类/代码吗?

【问题讨论】:

    标签: windows-phone-7 xaml windows-phone-7.1


    【解决方案1】:

    如果我的问题没问题,你可以使用网络浏览器isBusy 属性来跟踪它是否仍在下载数据并在它仍然忙碌时休眠。

    为了解析 html 文档,您可以像 jQuery 一样使用 NSoup 库来解析 html。它是来自 java 的 JSoup 库的一个端口。 http://www.developerfusion.com/project/98472/nsoup/

    这里解释的语法: http://jsoup.org/cookbook/extracting-data/selector-syntax

    【讨论】:

    • 在 Windows Phone 网络浏览器上是否忙?不是。
    【解决方案2】:

    如果您拥有您要导航到的网页,您可以在您的 javascript 中使用window.external.notify(document.documentElement.innerHTML) 将文档 html 传递到本机层。然后,您将使用 ScriptNotify 捕获本机代码中的值。

    稍微复杂一点,但如果您不拥有该网页,您可以托管自己的网页,使用原始页面打开 iframe,然后从 iframe 中获取 html。

    有关 window.external.notify 的更多信息,请参见此处:http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.scriptnotify(v=vs.95).aspx

    【讨论】:

      【解决方案3】:

      使用WebBrowser Windows Phone control

      导航到您的页面

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

      了解导航已完成且内容已加载

      WebBrowser.Navigated Event

      WebBrowser.LoadCompleted Event - 在 WebBrowser 控件加载内容后发生。

      WebBrowser.NavigationFailed Event - 跟踪导航失败

      WebBrowser 类事件按以下顺序引发:Navigating、Navigated 和 LoadCompleted。

      获取Html源代码

      WebBrowser 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 来调用任何可以在其中使用window.external.notify 的js 命令将结果传递回C#。

      【讨论】:

      • 在获得 Html 源代码之前,我可以做到这一点。但是那个 html 源代码有一个确切的 SourceCode 的副本。当它包含所有这些额外的字符和文本时,很难解析它。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多