解析HTML(在标签之间获取文本/字符串)

时间:2011-05-05 00:54:14

标签: c# windows-phone-7

我有这个:

<div class="ResultItem">
<table border="0" cellpadding="0" cellspacing="0" style="top: 0; left: 0; width: 100%;">
    <tr>
        <td class="result">
            <a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.aspx" onclick="trackClick(this, '117', 'http\x3a\x2f\x2fmsdn.microsoft.com\x2fen-us\x2flibrary\x2fsystem.windows.uielement.aspx', '1');"><b>UIElement</b> Class &#40;System.Windows&#41;</a>&nbsp;
            <div class="ResultDescription"><b>UIElement</b> is a base class for WPF core level implementations building on Windows Presentation Foundation &#40;WPF&#41; elements and basic presentation characteristics.</div>
            <div class="ResultUrl">msdn.microsoft.com&#47;en-us&#47;library&#47;sy<wbr><a class="wbr"></a>stem.windows.<b>uielement</b>.aspx</div>
        </td>
    </tr>
</table>
</div>

我想从<a>(grab this string)</a><div class="ResultDescription">(grab data</div>中提取数据。我该怎么做?

5 个答案:

答案 0 :(得分:3)

长期最好的选择是使用专用的HTML解析库而不是自定义字符串操作。有一个名为HtmlAgilityPackHAPPhone的主干版本可以在Windows Phone 7上运行。您必须从codeplex手动下载它,但它仍然需要自己编写它。

答案 1 :(得分:1)

如果您的目标是阅读MSDN网站,那么他们就拥有了实际的Web服务API

http://services.msdn.microsoft.com/ContentServices/ContentService.asmx

因此不需要屏幕抓取。只需添加对该URL的引用即可。

答案 2 :(得分:0)

如果,(且仅当!),您的html是有效的XHTML,您可以使用任何XML解析器来获得您想要的内容。

答案 3 :(得分:0)

重申BrokenGlass提到的内容,对What is the best way to parse html in C#?的压倒性回答是使用像HtmlAgilityPack这样的库,对于手机来说这意味着像HAPPphone这样的东西

答案 4 :(得分:0)

如果您的解析任务仅适用于小长度字符串,那么您可以使用javascript解析带有'html'内容的字符串。 以下代码行将使用正则表达式替换html标记并提供普通文本。

//Javascript
var normal_text = html_string.replace(/(<.*?>)/ig,"");