使用 C# 对字符串中的 html 元素重新排序

本文关键字:新排序 排序 元素 html 字符串 使用 | 更新日期: 2023-09-27 18:30:24

>我有一个从服务返回的html字符串。我需要更新这个 html 服务器端(使用 .Net)并在将其发送到客户端之前对一些元素进行重新排序。作为一个简单的例子,假设我有一个如下所示的 html 字符串。如果字符串是如下所示的表。我怎样才能操纵它把姓氏放<th><td>到它自己的<tr>里。html会更大,更复杂,但对于其中的一部分,下面说明了我需要如何更改它。由于实际 HTML 的复杂性,仅使用字符串替换效果不佳。

初始字符串

   "<table>
     <tbody>
      <tr>
        <th>First name</th>
        <td>some first name</td>
        <th>Last name</th>
        <td>some last name</td>
      </tr>
      <tr>
        <th>blah</td>
        <td>blah blah</td>
      </tr>
     </tbody>
    </table>
    "

修改后

   "<table>
     <tbody>
      <tr>
        <th>First name</th>
        <td>some first name</td>
      </tr>
        <th>Last name</th>
        <td>some last name</td>
      <tr>
        <th>blah</td>
        <td>blah blah</td>
      </tr>
     </tbody>
    </table>
    "

使用 C# 对字符串中的 html 元素重新排序

我知道URL答案是不受欢迎的,但你应该看看HTML敏捷包。它是为这种事情而设计的。

http://html-agility-pack.net/?z=codeplex

出于这个答案的目的,我将做出一个愚蠢的假设,即您已经阅读了字符串列表中的文件。让我们将此列表命名为 HTMLLines。那么以下应该做你想做的

int length=HTMLLines.Count;
for(int loop=0;loop<length;loop++)
{
     if(HTMLLines[loop].Equals("<th>Last name</th>"))
     {
          HTMLLines[loop]="</tr>'n<tr>'n"+HTMLLines[loop];
          //break;//If there is only one occurrence, remove the leading // else keep that to repeat for each occurence
     }
}

如果在此循环之后保存列表,则应具有所需的输出。

此代码假定列表中没有空值。如果有任何空值,则应将HTMLLines[loop].Equals("<th>Last name</th>")替换为HTMLLines[loop]=="<th>Last name</th>"

如果"<th>Last name</th>"只是您用于此问题的样本,不能用于完全匹配,则应将所有可能的匹配项放在一个数组中,并在每个循环中检查它们。在这种情况下,如果我们将数组命名为 theHeaders ,代码将是这样的:

int length=HTMLLines.Count;
for(int loop=0;loop<length;loop++)
{
     for(int loop1=0;loop1<theHeaders.Length;loop1++)
     {
         if(HTMLLines[loop].Equals(theHeaders[loop1]))
         {
              HTMLLines[loop]="</tr>'n<tr>'n"+HTMLLines[loop];
              break;
         }
    }
}

我希望这有助于为您指明正确的方向。

一个非常简单的方法可能是...

var result = htmlString.Replace("<th>Last name</th>", "</tr><tr><th>Last name</th>");

如果您需要比这更复杂的内容,则需要为您的问题添加更多详细信息。