나는 리펙토링을 위해 수백 가지의 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>
훨씬 더 깨끗합니다! 그리고 을 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는 스팬의 상위 요소를 파악하고 그 대신 클래스를 적용 할만큼 똑똑하지 않습니다. 여전히 수동이어야합니다. –
td와 범위가 인접한 경우 부모 - 자식 관계에 대해 알 필요가 없습니다. 예제보기에서 작동하는 샘플 regex replace를 추가했습니다. –
반드시 인접하지는 않습니다. –