我正在阅读一个巨大的HTML字符串,其中包含我需要从中提取的一些信息。我可以设置搜索参数(解析的位置),但是如何在不保存到临时文件然后使用StreamReader
的情况下实现此目的?
示例:
//Pertinent data starts here:
<!--
body for the page starts here
-->
<table border="0" >
<tr>
<td class='HeaderTD'><b>User Name</b></td>
<td class='HeaderTD'><b>Mark TheMan</b></td>
</tr>
<tr>
<td class='DataTD_Black_Bold '>Department</td>
<td class='DataTD'>Programming</td>
</tr>
<tr>
<td class='DataTD_Black_Bold '>Office Phone</td>
<td class='DataTD'>555-555-5555</td>
</tr>
<tr>
<td class='DataTD_Black_Bold '>Office Ext</td>
<td class='DataTD'>x5555</td>
我需要在类中设置一些属性到各个字段(字符串):
User.UserName = "Mark TheMan";
User.Department = "Programming";
User.OfficePhone = "555-555-5555";
等
您看我需要搜索包含"<b>User Name</b>"
之类的行,然后返回下一行,以便我可以解析所需的数据。如果您需要更多信息,请告诉我们,谢谢!
答案 0 :(得分:3)
你应该使用Html解析器,HtmlAgilityPack非常好。
这是一个小型控制台应用程序,向您展示从表中删除数据是多么容易:
static void Main(string[] args)
{
HtmlDocument doc = new HtmlDocument();
doc.Load("example.html");
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table"))
{
foreach (HtmlNode row in table.SelectNodes("tr"))
{
foreach (HtmlNode cell in row.SelectNodes("th|td"))
{
Console.WriteLine("Cell value : " + cell.InnerText);
}
}
}
}
对于您的示例输出将是:
Cell value : User Name Cell value : Mark TheMan Cell value : Department Cell value : Programming Cell value : Office Phone Cell value : 555-555-5555