Linq to XML VB.NET Select 并编辑 HTML table 中的行和单元格
Linq to XML VB.NET Select and edit rows and cells from a HTML table
我有一个普通的 table 由行 (tr) 和单元格 (td) 组成,没有特定属性。
我可以读取它并将其解析为 xElement,然后我需要使用 LINQ XML 并根据它们在行中的位置对某些单元格执行计算和更改。
<tr><td>A</td><td>12</td><td>2</td><td>Result</td></tr>
<tr><td>BA</td><td>3.65</td><td>6</td><td>Result</td></tr>
例如,我需要将单元格 2 和 3 的值相加并将结果写入单元格 4 的每一行。
我可以找到很多示例,其中给定的单元格具有名称属性,bot none 我可以在其中 select 所有行,并且对于每一行,根据它们的相对位置对单元格应用计算.
一种可能的方式,假设您的 table 行具有一致的结构*:
Dim xml = <table>
<tr><td>A</td><td>12</td><td>2</td><td>Result</td></tr>
<tr><td>BA</td><td>3.65</td><td>6</td><td>Result</td></tr>
</table>
'loop through table rows'
For Each row As XElement In xml.<tr>
'sum value of 2nd & 3rd cells'
Dim sum = row.<td>.Skip(1).Take(2).Sum(Function(x) CDec(x))
'get the last cell where the sum result will be displayed'
Dim result = row.<td>.Last()
'update last cell with sum result'
result.Value = sum.ToString(CultureInfo.InvariantCulture)
Next
Console.WriteLine(xml.ToString())
控制台输出:
<table>
<tr>
<td>A</td>
<td>12</td>
<td>2</td>
<td>14</td>
</tr>
<tr>
<td>BA</td>
<td>3.65</td>
<td>6</td>
<td>9.65</td>
</tr>
</table>
* :每行有 4 个单元格,第 2 和第 3 列始终包含有效的十进制字符串
我有一个普通的 table 由行 (tr) 和单元格 (td) 组成,没有特定属性。
我可以读取它并将其解析为 xElement,然后我需要使用 LINQ XML 并根据它们在行中的位置对某些单元格执行计算和更改。
<tr><td>A</td><td>12</td><td>2</td><td>Result</td></tr>
<tr><td>BA</td><td>3.65</td><td>6</td><td>Result</td></tr>
例如,我需要将单元格 2 和 3 的值相加并将结果写入单元格 4 的每一行。
我可以找到很多示例,其中给定的单元格具有名称属性,bot none 我可以在其中 select 所有行,并且对于每一行,根据它们的相对位置对单元格应用计算.
一种可能的方式,假设您的 table 行具有一致的结构*:
Dim xml = <table>
<tr><td>A</td><td>12</td><td>2</td><td>Result</td></tr>
<tr><td>BA</td><td>3.65</td><td>6</td><td>Result</td></tr>
</table>
'loop through table rows'
For Each row As XElement In xml.<tr>
'sum value of 2nd & 3rd cells'
Dim sum = row.<td>.Skip(1).Take(2).Sum(Function(x) CDec(x))
'get the last cell where the sum result will be displayed'
Dim result = row.<td>.Last()
'update last cell with sum result'
result.Value = sum.ToString(CultureInfo.InvariantCulture)
Next
Console.WriteLine(xml.ToString())
控制台输出:
<table>
<tr>
<td>A</td>
<td>12</td>
<td>2</td>
<td>14</td>
</tr>
<tr>
<td>BA</td>
<td>3.65</td>
<td>6</td>
<td>9.65</td>
</tr>
</table>
* :每行有 4 个单元格,第 2 和第 3 列始终包含有效的十进制字符串