我有XElement
(表格模板),下一个代码:
<table border="0" cellpadding="0" cellspacing="0" width="920" align="center">
<tr>
<td valign="top" width="200">
</td>
<td valign="top" width="400">
</td>
</tr>
</table>
我还有DataTable
,其中包含2列,例如5行。需要使用表格模板将此DataTable
中的数据放入新XElement
。我认为我的功能应该是这样的:
public XElement Filling(XElement htmlTable, DataTable dataTable)
但我不知道如何从htmlTable
获取部分代码:
例如,如何才能获得具有属性td
的第一个width="200"
。
任何建议
由于
答案 0 :(得分:1)
我完全不理解这个问题,但这是一个如何仅使用属性td
获取第一个width="200"
的示例,假设htmlTable包含所示的html:
var firstTd = htmlTable.Descendants("td").FirstOrDefault(o => o.Attribute("width").Value == "200");
htmlTable.Descendants("element_name")
会在表格标记内获取任何html元素(在这种情况下为tr
和td
)。答案 1 :(得分:0)
private DataTable ParseHtmlTable( string html )
{
DataTable retVal = new DataTable();
XElement data = XElement.Parse( html );
// Gets rows of values.
List<string[]> records = ( from row in data.Descendants( "TR" ) select ( from cell in row.Descendants( "TD" ) select cell.Value ).ToArray() ).ToList();
// Ensure maximum columns
retVal.Columns.AddRange( new DataColumn[ records.Max( x => x.Length ) ] );
// Add records
records.ForEach( x => retVal.Rows.Add( x ) );
return retVal;
}