0
我有数百个ASPX文件需要重构一下。我有此代码的几个事件:如何使用HTML敏捷包修复HTML
<td style="text-align: right;">
<span class="frmFldLbl">Task (or some other text)</span>
</td>
,所有的frmFldLbl
确实是定义颜色和文字大小。所以我想将上面的内容更改为:
<td class="frmFldLbl">
Task (or some other text)
</td>
更清洁!它的功能也是一样的,因为我还会把text-align: right;
放在frmFldLbl
类的定义上。
现在,我只是担心为一个文件工作,然后我会添加目录递归和所有的好东西。我使用HTML Agility Pack来解析HTML文件,并且我可以使用XPATH来选择我要重构的跨度。
我需要做的和没有想到的是如何在正确的位置插入文字到<td>
的孩子。如果我能找到TFM,我会RTFM,但它似乎没有很好的记录。这是我想出的(它抛出一个异常)。 如何将文字插入正确的位置?
Dim doc As New HtmlDocument()
doc.Load(fileName)
Dim culpritNodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//td/span[@class='frmFldLbl']")
If culpritNodes IsNot Nothing Then
For Each culpritNode As HtmlNode In culpritNodes
Dim culpritNodeIndex As Int32 = culpritNode.ParentNode.ChildNodes.IndexOf(culpritNode)
Dim culpritNodeText As String = culpritNode.InnerHtml
Dim parentTdClassAtt As HtmlAttribute = culpritNode.ParentNode.Attributes("class")
If Not parentTdClassAtt.Value.Contains("frmFldLbl") Then
If Not String.IsNullOrEmpty(parentTdClassAtt.Value) Then parentTdClassAtt.Value += " "
parentTdClassAtt.Value += "frmFldLbl"
End If
Dim replacementNode As New HtmlNode(HtmlNodeType.Text, doc, 0)
replacementNode.InnerHtml = culpritNodeText
culpritNode.ParentNode.ChildNodes.Insert(culpritNodeIndex, replacementNode)
culpritNode.Remove()
Next
End If
doc.Save(fileName)
我在这里感谢您的输入。也许HTML敏捷包不适合aspx文件。但我没有看到VS中的Replace功能会如何更好。首先,我需要学习用愚蠢的VS风格的正则表达式来编写正则表达式。我将无法使用替换 - 我会用什么替换它?据我所知,VS不够聪明,无法确定哪个元素是跨度的父元素,并在其上应用类 - 这仍然需要手动。 – 2011-02-13 04:07:45